El módulo P5NCI permite cargar la librería desde Perl y llamar a las funciones:
$ cat -n usehcf.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use P5NCI::Library; 4 5 my $lib = P5NCI::Library->new( library => './libhcf.so' ); 6 $lib->install_function( 'hcf', 'iii' ); 7 8 print hcf( 20, 10 ), "\n"; 9 print hcf( 12, 9 ), "\n"; 10 print hcf( 18, 12 ), "\n";La llamada a
P5NCI::Library->new carga la librería.
La subsiguiente llamada al método install busca la función en la librería
y crea una interfaz Perl para la especificación dada por la firma 'iii'.
Esta firma indica que la función recibe dos enteros y devuelve un entero.
Observe que mediante P5NCI es posible usar funciones cuyo
fuente no esta disponible. Tampoco importa en que lenguaje esté escrito.
Importa que dispongamos de la librería y que conozcamos el nombre y la 
interfaz de la función.
El constructor admite la opción path que permite especificar el 
path de búsqueda para la librería. En este caso 
podemos usar el ''nombre'' oficial de la librería (hcf) y no
la especifciación completa. También dispone de una opción package que
permite especificar el paquete en el que se aloja la función.
$ cat -n usehcf2.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use P5NCI::Library; 4 5 my $lib = P5NCI::Library->new( library => 'hcf', path => '.' ); 6 print "Path de búsqueda:\n@DynaLoader::dl_library_path\n"; 7 $lib->install_function( 'hcf', 'iii' ); 8 9 print "hcf( 20, 10 ) = ",hcf( 20, 10 ), "\n"; 10 print "hcf( 12, 9 ) = ",hcf( 12, 9 ), "\n"; 11 print "hcf( 18, 12 ) = ",hcf( 18, 12 ), "\n";
La variable DynaLoader::dl_library_path contiene el camino de búsqueda de las librerías dinámicas.
Casiano Rodríguez León
