Si usted es un administrador de sistemas Linux que escribe código perl ocasionalmente (o) un desarrollador que quiere aprender el lenguaje de programación perl , estos 20 consejos básicos de programación en perl y los trucos explicados en este artículo te ayudarán a empezar.
1. Enumere todos los módulos Perl instalados desde la línea de comandos de Unix
Obtenga una lista de todos los módulos perl instalados como se muestra a continuación.
$ perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Filter.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/LinkExtor.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/PullParser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Parser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/TokeParser.pm .....
En el ejemplo anterior,
- Archivo::Buscar y Archivo::Especificación::Funciones module se utilizan para enumerar todos los módulos instalados.
- Opción -M carga el módulo. Ejecuta usar módulo antes de ejecutar el script
- opción -T habilita la verificación de corrupción, lo que indica a Perl que realice un seguimiento de los datos del usuario y evite hacer algo inseguro con ellos. Aquí esta opción se usa para evitar tomar el nombre del directorio actual del variable @INC y enumerar los archivos .pm disponibles del directorio de forma recursiva.
- opción -l habilita el procesamiento automático de final de línea en la salida. Las declaraciones impresas tendrán el nuevo separador de línea (\n) agregado al final de cada línea.
- opción -w imprime cualquier mensaje de advertencia.
- opción -e indica que la siguiente cadena debe interpretarse como un script perl (es decir, una secuencia de comandos).
2. Enumere todos los módulos de Perl instalados desde un script de Perl (Usando ExtUtils::Paquete instalado)
Utilice el siguiente fragmento de código perl para obtener una lista de los módulos perl instalados.
my $Inst = ExtUtils::Installed->new(); my @Modules = $Inst->modules(); print "Current List of Installed PERL Modules:\n\n"; foreach my $mod(@Modules){ print "$mod\n"; }
Nota :El módulo ExtUtils::Installed no está preinstalado con el programa perl. Entonces deberías instalarlo desde cpan.
3. Mostrar módulos de Perl mediante el comando Perldoc
perldoc perlmodlib enumera todos los módulos que vienen preinstalados con el programa perl.
$ perldoc perlmodlib Attribute::Handlers Simpler definition of attribute handlers AutoLoader Load subroutines only on demand .........
$ perldoc perllocal
El comando perldoc perllocal enumera todos los módulos opcionales instalados en el sistema con la siguiente información:
- Fecha de instalación
- Ubicación del directorio donde está instalado el módulo perl
- Número de versión del módulo Perl
- etc,
4. Ver la documentación de Perl desde la línea de comandos de Unix
Puede usar el comando perldoc o man para obtener ayuda sobre un módulo perl en particular, como se muestra a continuación.
$ perldoc Regexp::Common (or) $ man Regexp::Common
Si el documento de perl no es suficiente, use la opción de perldoc -m, para ver tanto el código fuente como la documentación del módulo sin formato del módulo de perl especificado.
$ perldoc -m Regexp::Common
Para ver la documentación sobre una función específica de Perl, use la opción -f, como se muestra a continuación.
$ perldoc -f splice
5. Vea la documentación de Perl en línea (o descárguela para usarla sin conexión)
Un montón de excelentes tutoriales de perl están disponibles en línea en la documentación de programación de Perl.
Desde este sitio web, también puede descargar la versión HTML o PDF de la documentación de Perl para verla sin conexión.
- Versión completa (contiene archivos HTML y PDF):perldoc.tar.gz
- Versión Lite (solo contiene archivos HTML):perldoc-html.tar.gz
6. Lea la documentación de Perl usando Podbrowser
Descargue el navegador de pods. Puede explorar los módulos, las funciones y la documentación de Perl instalados visualmente desde el podbrowser. Desde su sitio web:
PodBrowser is a documentation browser for Perl. You can view, search and print documentation for Perl's builtin functions, its "perldoc" pages, pragmatic modules and the default and user-installed modules.
7. Modificar la configuración del módulo CPAN manualmente
Para instalar los módulos perl desde la línea de comandos de Linux, use CPAN. Discutimos anteriormente sobre cómo instalar módulos perl, tanto manualmente como usando el comando CPAN.
La primera vez que utiliza el módulo CPAN de Perl ( perl -MCPAN ), se ejecuta un script para configurar varias opciones. Por ejemplo, configura la ubicación de los archivos tar, gzip y unzip, el tamaño de caché para el directorio de compilación, la ubicación del archivo fuente, etc.
Para reconfigurar manualmente los archivos de configuración del módulo CPAN, puede editar uno de los siguientes archivos.
- ~/.cpan/CPAN/MyConfig.pm – Archivo de configuración de Perl CPAN específico del usuario
- /etc/perl/CPAN/Config.pm – El archivo de configuración de CPAN de Perl para todo el sistema se almacena en algún lugar del árbol de directorios del módulo de Perl.
$ vim ~/.cpan/CPAN/MyConfig.pm (and / or) $ vim /etc/perl/CPAN/Config.pm
8. Modificar las configuraciones del módulo CPAN de forma interactiva
Inicie el shell cpan como se muestra a continuación y ejecute o confi init , que le preguntará "¿está listo para la configuración manual?", dé su opción (Sí / No) para continuar. Esto enumerará todos los parámetros de configuración junto con su valor.
$ perl -MCPAN -e shell cpan> o conf init cpan> o conf
9. Verifique si hay un módulo Perl instalado
Si desea saber si un módulo perl (por ejemplo, Regexp::Common) está instalado, ejecute el siguiente comando. Si obtiene “1” como salida, se instala el módulo perl especificado. De lo contrario, recibirá el mensaje de error que se muestra a continuación.
$ perl -MRegexp::Common -le 'print 1' Can't locate Regexp/Common.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).
$ perldoc Regexp::Common $ man Regexp::Common
10. Listar los directorios donde se encuentran los módulos de Perl
La matriz perl @INC contiene la lista de lugares en los que las construcciones "hacer EXPR", "requerir" o "usar" buscan sus archivos de biblioteca. El siguiente resumen muestra el contenido de la matriz @INC perl:
$ perl -e 'foreach $folder (@INC) { print "$folder\n";}'
11. Comprobar la versión de un módulo Perl instalado
Para verificar el número de versión de un módulo, use el siguiente comando.
#-- check the version number of CGI module $ perl -MCGI -e 'print "$CGI::VERSION \n"' #-- check the version number of Regexp::Common module $ perl -MRegexp::Common -e 'print "$Regexp::Common::VERSION \n"'
12. Especifique la versión mínima del módulo Perl para usar
A veces, es posible que desee utilizar una versión específica de un módulo de Perl en su programa. Para evitar el uso de una versión anterior de ese módulo, agregue el número de versión mínimo que desee en la declaración de uso del 'módulo' como se muestra a continuación.
#-- Use version 5.8 of later of module LWP use LWP 5.8
13. Módulos útiles de Perl para desarrollar aplicaciones web
Si está desarrollando una aplicación web, es posible que desee considerar el uso de los siguientes módulos de Perl.
- CGI – Módulo de propósito general para crear páginas web
- Plantilla – Kit de herramientas de plantillas para generar contenido web dinámico
- LWP – LWP se utiliza para obtener contenido web
- WWW::Mecanizar – Use esto para automatizar la interacción con un sitio web
14. Determine el sistema operativo en el que se ejecuta el script Perl
El nombre del sistema operativo subyacente se almacena en la variable $^O. Los siguientes son algunos de los valores comunes de $^O
- linux – Linux
- MSWin32:Windows
- aix – AIX
- solaris – Solaris
15. Definir valores constantes dentro del script Perl
La mejor manera de definir valores constantes es usar Perl Readonly o Constante módulo como se muestra a continuación.
use Readonly; Readonly my $PI => 3.1415926535; (or) use Constant PI => 3.1415926535;
Tenga en cuenta lo siguiente:
- Con el módulo de solo lectura, puede definir escalares, hashes y matrices de solo lectura.
- Si intenta modificar una variable de solo lectura, el programa morirá.
16. Determine el usuario del sistema operativo y/o el grupo del sistema operativo que ejecuta un script de Perl
Utilice las siguientes variables predefinidas para obtener la información de usuario y grupo del proceso actual:
- $ – identificación de usuario real (uid); valor único
$> – id de usuario efectivo (euid); valor único- $( – ID de grupo real (gid); lista (separada por espacios) de grupos
- $) – id de grupo efectivo (egid); lista (separada por espacios) de grupos
Tenga en cuenta lo siguiente:
- Esta información se aplica solo a los sistemas Unix
- Los valores que contienen estas variables son números enteros.
- Para obtener los nombres de usuario y grupo, use '(getpwuid($<))[0]' (para información de usuario) y 'getgrgid($()' (para grupos).
17. Ejecutando Comandos Externos
Hay muchas formas de ejecutar comandos externos desde Perl como se explica a continuación.
- sistema() – desea ejecutar un comando y no desea capturar su salida
- ejecutivo – no desea volver al script perl de llamada
- comillas invertidas – desea capturar la salida del comando
- abrir – desea canalizar el comando (como entrada o salida) a su secuencia de comandos perl
18. Parse Plain Messy Perl Script usando B::Deparse
¿Tienes un trozo de código Perl ofuscado o simplemente desordenado y difícil de leer? El B::Deparse módulo puede ser capaz de ayudar. Compila, luego descompila el programa que se le da, expandiéndolo y formateándolo muy bien. Elimina las líneas de comentarios escritas en el programa perl.
Para ejecutarlo en la línea de comandos, escriba "perl -MO=Deparse prog.pl". Aquí hay un ejemplo de su uso,
Primero cree el programa de entrada:
$ cat scary.pl for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&& (tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X; /(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");
Pase el script de Perl Scary.pl al módulo Deparse
$ perl -MO=Deparse scary.pl foreach $_ (74, 117, 115, 116) { $a .= chr $_; } ; $_ .= 'qwertyui' and tr/eiqrtuwy/nr oteah/ foreach ($b); foreach $_ ($c) { $_ .= $^X; /(p.{2}l)/; $_ = $1; } $b =~ /(..)$/; print "$a$b $c hack$1."; scary.pl syntax OK
19. Lista de controladores DBI instalados
DBI es el módulo de interfaz de base de datos estándar para Perl. El siguiente programa Perl imprime una lista de todos los controladores DBI instalados.
use strict; use warnings; use DBI; print map "$_\n",DBI->available_drivers;
Ejemplo de salida del programa anterior:
DBM ExampleP File Proxy Sponge mysql
Si el controlador que necesita no está instalado, use CPAN para encontrar el módulo DBD (controlador de base de datos) correcto.
20. Variable especial de expresión regular
Una de las funciones más útiles o la función de manipulación de cadenas más potente de Perl es la expresión regular.
En el centro de esto se encuentra la expresión regular que comparten muchas otras utilidades de UNIX.
Perl tiene una gran cantidad de variables especiales que se completan después de cada coincidencia de expresión regular m// o s///.
- $1, $2, $3, etc. mantienen las referencias anteriores.
- $+ contiene la última referencia inversa (el número más alto).
- $&(símbolo de dólar) contiene toda la coincidencia de expresiones regulares.
- $' (dólar seguido de un apóstrofe o comilla simple) contiene la parte de la cadena después (a la derecha) de la coincidencia de expresiones regulares.
- $` (tick inverso del dólar) contiene la parte de la cadena anterior (a la izquierda) de la coincidencia de expresiones regulares.
No se recomienda el uso de estas variables en los scripts de Perl cuando el rendimiento importa, ya que hace que Perl ralentice todo. coincidencias de expresiones regulares en todo el script de Perl.
Todas estas variables son de solo lectura y persisten hasta que se intenta la siguiente coincidencia de expresiones regulares.
Ejemplo
$string = "This is the geek stuff article for perl learner"; $string =~ /the (g.*) stuff(.*) /; print "Matched String=>$&\nBefore Match=>$`\nAfter Match=>$'\nLast Paren=>$+\nFirst Paren=>$1\n";
Salida del ejemplo anterior:
Matched String=>the geek stuff article for perl Before Match=>This is After Match=>learner Last Paren=> article for perl First Paren=>geek