Nov 142013
 
Artículo Perl

Gran parte de la potencia del lenguaje Perl proviene de la funcionalidad implementada en los numerosos módulos existentes en la librería CPAN.

Normalmente los módulos se instalan en ubicaciones por defecto conocidas por el intérprete perl, aunque también es posible instalarlos en ubicaciones ad hoc, e indicar al intérprete las ubicaciones en donde debe buscar los módulos que solicita el script mediante sentencias ‘use’.

Esto puede provocar que en un sistema existan distintas versiones de un mismo módulo instaladas en distintas ubicaciones, y en un momento determinado podemos necesitar identificar la ubicación concreta desde la que se está cargando un determinado módulo.

Esto es fácil utilizando las variables @INC y %INC

@INC

@INC es un array que contiene la lista de ubicaciones en las que el intérprete va a buscar los módulos.

Podemos presentar en pantalla la lista completa de ubicaciones con un perl “one-liner” de la forma:

$ perl -e'print join("\n",@INC) . "\n"'

Por ejemplo, en nuestro sistema el resultado es:

$ perl -e'print join("\n",@INC) . "\n"'
/etc/perl
/usr/local/lib/perl/5.14.2
/usr/local/share/perl/5.14.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.14
/usr/share/perl/5.14
/usr/local/lib/site_perl

%INC

%INC es una hashtable cuyas claves son los módulos cargados, y los valores son las ubicaciones desde las que han sido cargados

De esta manera, si queremos saber la ubicación desde la que se carga un módulo, basta con consultar el contenido del hash, una vez ha sido cargado.

Encontrar la ubicación de un módulo usando @INC y %INC

Por ejemplo, podemos consultar la ubicación del módulo “Carp” con un one-liner de la forma:

perl -MCarp -e'print $_ . " => " . $INC{$_} . "\n" for keys %INC'

Que en nuestro sistema imprime el siguiente resultado:

warnings.pm => /usr/share/perl/5.14/warnings.pm
Carp.pm => /usr/local/share/perl/5.14.2/Carp.pm
Exporter.pm => /usr/share/perl/5.14/Exporter.pm
strict.pm => /usr/share/perl/5.14/strict.pm

Encontrar la ubicación de un módulo usando perldoc

Si perldoc está instalado en nuestro sistema, podemos consultar también la ubicación de un módulo utilizando el comando perldoc con los modificadores “-lm”:

$ perldoc -lm List::Util
/usr/lib/perl/5.10/List/Util.pm

El modificador -l solicita que se imprima la ubicación del módulo, en lugar de la documentación (POD) del mismo

El modificador -m evita que se produzca un error si no hay documentación asociada al módulo por el que se pregunta.

Indice de artículos sobre programación en lenguaje Perl

 Publicado por en 1:19 pm

 Deja un comentario

(requerido)

(requerido)