Facebook Twitter Google Digg Reddit Email Imprimir
Jueves 19 de julio de 2018
Santoral:
Natacha, Arsenio
Otros:
Semana:
29
Día año:
200/365 (55%)
U.F.:
27191.96
IPC:
0,1
Dolar:
655,52
Euro:
763,39
Bitcoin:
U$ 6588.6120238095
mindicador.cl
Time4VPS.EU - VPS hosting in Europe

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

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
E-Mail:ldelabar@wyzer.cl
Web:www.wyzer.cl