Facebookfacebook Twitter Emailmail Imprimirprint
Jueves 21 de noviembre de 2024
Santoral:
Presentación de la Virgen
Otros:
Día Mundial de la Televisión
Semana:
47
Día año:
326/366 (89%)
U.F.:
Sin información
IPC:
Sin información
Dolar:
Sin información
Euro:
Sin información
Bitcoin:
U$ {bitcoin}
mindicador.cl

3 Formas de incluir librerias locales

Alternativas para encontrar librerias privadas o en desarrollo

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 ;

...

Escrito por: Luis Hernán de la Barra, 21/06/2015
Si tiene interés por alguno de éstos servicios u otro similar, por favor llene el formulario de contacto

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