3 Formas de incluir librerias locales
Introducción
En algunas ocaciones, requerimos utilizar librerias Perl personales, privadas o propias de la organización, que no se encuentran instaladas como parte del sistema (y no necesariamente como root), con lo que vemos un error como:
MiScript.pl
Can't locate MiModulo.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .). BEGIN failed--compilation aborted.
La solución está en indicarle a Perl que agrege el directorio en @INC para que localice nuestra librería
Configuraciones
Variables de ambiente PERL5LIB y PERLLIB
Es una de las formas más utilizadas, consistente en definir la variable de ambiente PERL5LIB (o PERLLIB, aunque no es la preferida) de la misma forma de $PATH, incluyendo una lista de directorios utilizando el caracter ':' (dos puntos) como separador, por ejemplo:
EXPORT PERL5LIB=/home/usuario/lib:/home/desarrollo/perl/lib
use lib
Dentro del propio script Perl, podemos forzar una ruta para incluir módulos mediante la instrucción user lib ruta
, con lo que antepone la ruta dada en la búsqueda de librerías:
#!/usr/bin/perl
use lib '/home/usuario/lib' ;
use lib '/home/desarrollo/perl/lib' ;
use MiModulo ;
...
Opción -I del intérprete Perl
La opción -I nos permite incluir una ruta directamente desde la llamada del intérprete, lo cual es de utilidad en ocaciones de desarrollo y pruebas, por ejemplo:
perl -I/home/usuario/lib -I/home/desarrollo/perl/lib MiScript.pl
Existe otra, bloque BEGIN, pero no se recomienda
Existe la posibilidad de incluir directorios por medio del bloque BEGIN, que se ejecuta antes de concluir la compilación del script Perl, pero no es recomendado dado que existen ofcialmente los 3 métodos anteriores para hacerlo.
#!/usr/bin/perl
BEGIN { push @INC, '../lib'; }
use MiModulo ;
...
Generado por Sistema y almacenado en cache
Wyzer Luis Hernán de la Barra |
|
Teléfono: | +56995451689 |
WhatsApp: | +56995451689 |
E-Mail: | info@wyzer.cl |
Web: | www.wyzer.cl |