¿Qué es Perl?

Perl (Practical Extraction y Report Language)  es un lenguaje para la manipulación de cadenas de datos y de archivos, y su diseño ignora la distribución en pantalla de botones, menús, listas de selección, y otros elementos propios de una interfaz, es decir, no es nada vistoso, aunque su especialización en el uso de modelos de búsqueda lo hace muy potente. Se considera una herramienta extraordinaria alternativa muy atractiva, porque es un lenguaje especializado en buscar, extraer y presentar información, no ya únicamente como lenguaje de programación para realizar scripts CGI, sino como una ayuda para realizar tareas de administración de sistemas o de automatización de ciertas labores.

Perl funciona sobre un amplio abanico de plataformas, principalmente el sistema operativo Windows, en cualquiera de sus versiones.  Este es un ejemplo: www.ActiveState.com/ActivePerl

 

   Historia   

Es un intérprete que fue creado por Larry Wall y liberado al mundo para disfrute de cualquier persona. Larry cedió Perl de forma gratuita, estipulando como tal su uso, el acceso libre a los intérpretes, y a las mejoras de Perl. Y condicionó su utilización a que no se hiciera explotación comercial o de lucro.

Su función originalmente fue para extraer informes de ficheros de texto y utilizar dicha información para preparar informes. Actualmente ha evolucionado de forma que es posible realizar labores de administración en cualquier sistema operativo. Debe gran parte de su popularidad a tratarse de un intérprete que se distribuye de forma gratuita. Un script genérico de Perl puede ejecutarse en cualquier plataforma en la que tengamos un intérprete disponible.

Con el crecimiento del WWW se  vio que era necesario realizar programas CGI y Perl se convirtió en la elección natural para los que ya estaban familiarizados con este lenguaje. El aumento de sitios Web ha transformado el papel de Perl de un lenguaje de Script oscuro y desconocido a la herramienta principal de programación CGI.

 

Instalación    

Dependiendo del sistema operativo que se utilice, habrá que utilizar una distribución de Perl u otra. La principal referencia figura en http://www.perl.com/.

No obstante, en http://www.cpan.org/ podemos encontrar más distribuciones, disponiendo de al menos una para cada plataforma.

Este documento se centra en la utilización de Perl desde los sistemas operativos de la serie Microsoft Windows igual o superior a la 95. Una excelente fuente de recursos para Perl sobre Windows la podemos encontrar en http://www.activestate.com/

 

Es conveniente utilizar como directorio base de la instalación C:\Perl, y añadir al PATH la ruta C:\PERL\BIN. El típico programa “Hola, mundo” en Perl se realiza poniendo en un fichero (supongamos “hola.pl”) las siguientes instrucciones:

               #!c:/perl/perl

      print “Hola mundo\n”;

 Para ejecutar basta con escribir, desde una ventana de MS-DOS:

      perl hola.pl
 

Recomendaciones en el proceso de instalación

 

·        ·         Perl es un lenguaje case-sensitive.

·        ·         Para editar el código fuente necesitamos simplemente un editor de texto. El Notepad puede valer.

·        ·         Se ejecuta desde la línea de comandos de una ventana del sistema operativo.

·        ·                                    Los comentarios comienzan con el carácter #

·        ·                                     Las instrucciones terminan en punto y coma.

·        ·         La función print sirve para mostrar información por pantalla, y admite formatos muy diversos aunque sencillos de comprender. En Perl hay mucha flexibilidad para escribir los argumentos:

       
       print(“Un texto”, “Otro texto”);               # con paréntesis
       print “Un texto”, “Otro texto”;                 # sin paréntesis

 

·        ·         Perl ofrece una ayuda en línea desde la consola de comandos. Por ejemplo, para obtener ayuda sobre la función print, escribiremos en una ventana MSDOS:

 

       perldoc –f print

 

Variables escalares

Cualquier nombre que comience con $ es una variable escalar, lo que significa que puede contener sólo un objeto, aunque este objeto puede ser también complejo. El signo = se usa para asignar el objeto a la variable. Los caracteres permitidos para un nombre son las letras, dígitos y el caracter de subrayado. Después de $ debe continuar al menos una letra. Las letras mayúsculas y minúsculas son diferenciadas en los nombres de variables.

Ejemplo:
$lenguaje = "Perl";
$LENGUAJE, $lenguaje y $LeNgUaJe son 3 variables distintas.

$_ es una variable muy especial porque almacena siempre la última línea que se dio de entrada

También pueden almacenar modelos.

Ejemplo: $Variable = /^Canción triste de Hill Street/

 

Variables especiales.

$_ Almacena la línea completa que ha sido leído.
$` Almacena la parte situada a la izquierda de un modelo.
$' Almacena la parte situada a la derecha de un modelo.
$& Almacena la parte propia del modelo encontrado.

Ejemplo (varespe.pl):

# Variables especiales

$_ = "Me gustan los mazapanes y el anís";
/ mazapanes /;
print $`, "\n"; # "Me gustan los"
print $', "\n"; # "y el anís"
print $&, "\n"; # "mazapanes"
print $`.$&.$'; # Igual que $_

Variable de edición directa $^I.

Cuando a $^I se le asigna un valor como .bak o .000 el lenguaje activa la edición directa de los archivos que llegan al programa a través del operador <>. Es muy útil para buscar y sustituir cadenas dentro de un grupo de archivos. Estudia el siguiente ejemplo (edicdir.pl):

# Edición directa con Perl
# Busca y reemplaza todas las cadenas html por HTML
# Teclear: Perl edicdir.pl <unhtml.htm doshtml.htm

$^I = ".bak";
while (<>) {
s/html/HTML/g;
print;}

Matrices @.

Se definen con el símbolo @ como primer carácter para diferenciarlas de las variables escalares. Contienen listas de objetos que no tienen que ser del mismo tipo.

Ejemplos:
@frutas = ("manzana", "pera", "plátano")
@diameses = (31,28,31,30,31,30,31,31,30,31,30,31)
@detounpoco = ("manzana", 31, @frutas, $eltiempo)

Matrices asociativas.

Una matriz asociativa está indexada por cadenas en lugar de por números. Se utiliza % para definir el tipo de matriz asociativa y un elemento está indexado por el anterior formando ambos parejas del tipo indice=valor.

Un ejemplo sencillo con una matriz asociativa (matrasoc.pl):

%campos = ("nombre", "Ana", "calle", "Andalucia 1", "edad", "56");

Foreach(), Keys() y Each().

Ejemplo usando foreach para recorrer los elementos de una matriz hasta el final, la función keys() para acceder a los índices de una matriz asociativa y también la función each() que se presenta como la forma más lógica de acceder a los índices y a los valores de una matriz asociativa (matrasc2.pl):

# Recorre e imprime una matriz @ con foreach.

@meses = ("I", "ene", "II", "feb", "III", "mar");
foreach (@meses) {

Split().

Usar Split() para convertir cadenas en listas de datos.

# Un ejemplo de Split() para convertir cadenas en listas

$cadena= "empresa=Donuts&producto=Donettes&precio=100";

Como se procesa un programa Perl
    Perl procesa el programa en varias fases:
    1. examina la linea #!/usr/bin/perl... buscando suiches...
        este paso lo hace el shell de Unix pero en W95/NT lo hace el Perl
    2. ejecución previa... un recuerdo de awk...
        subrutinas BEGIN... 
        funciones "use" para cargar módulos 
            recuerde que los módulos empiezan por mayuscula... 
            esta ejecución tenprana de "use" es otra diferencia con "requiere"
            ... requiere se ejecuta en la fase 4
        funciones "use" para dar directivas al compilador
            en este caso la palabra que sigue a use empieza por minuscula
            use integer;  
                # indica al compilador que solo queremos enteros  
            no integer;  
                # indica al compilador que queremos números decimales  
    3. compilación... se habia dicho que Perl no necesita compilar... 
        esta es una compilación a un codigo intermedio no a codigo de maquina
        ...cancela si hay errores de sintaxis...
  4. ejecución carnuda... 
        ejecuta el codigo intermedio... hasta encontrar exit
        ... o hasta que se acabe el archivo... o hasta que encuentre 
        una linea con __END__
5. ejecución final...otro recuerdo de awk...
        subrutinas END... empezando por el último que se cargo
       en las subrutinas BEGIN y END se puede omitir sub
        BEGIN {
            print "esto se escribe en la fase 2\n";                 
            print "aunque el programa tenga errores de sintaxis\n"
        } END {
            print "esto se escribe en la fase 5\n"; 
            print "después que el programa termina \n"}
        print "esto se escribe en la fase 4 \n"";
 
Consejos para el uso de Perl  
Para empezar, utilizad a menudo (sobre todo en la fase de editing) la opción -w (como ya se ha dicho, se puede insertar como '#!/usr/bin/perl -w' o como $ perl -w script.pl ; esto os facilitará bastante las cosas, dado que si la ejecución del código se bloquea, a través de la opción -w tendréis mayores posibilidades de entender dónde está el error.
 
Instrumentos del Perl

El intérprete Perl, una base de datos y los módulos para la interacción entre los dos; si queréis, además, llevar los resultados de vuestro trabajo a la web, necesitaréis también un servidor de web.
Para las pruebas que haremos en estas páginas nos basaremos en el Perl 5.005, base de datos Postgresql y módulo DBD::Pg.pm. Para quien no cuente con tales instrumentos, os recordamos que se pueden descargar libremente de la red, respectivamente de http://www.perl.org (o bien de http://www.activestate.com para los porting sobre windows), http://www.postgresql.org e http://www.cpan.org.

 

 

Interfaz de la lengua internals y de C

perlembed - cómo encajar el Perl en su programa de C

El  Perl puede encajar  el Perl  en tripa el eliminar errores del Perl de los perldebguts de su  uso  de C o de C++ y los reemplazos  internos  de los perlxs del Perl XS  del perlxstut  de las extremidades del Perl XS de uso de programación  del perlclib  preceptoral del interfaz para las funciones internas del Perl de C  de biblioteca  de los perlguts estándares de las funciones para ésos que hacían el Perl  del perlcall  de las extensiones que llamaba a convenciones del perliol  interno  perlintern C API de las funciones del Perl del listado  del Perl  API del perlapi de C (autogenerated)  ( autogenerated) para la puesta en práctica del Perl del IO en guía  interna  de los hackers del Perl del perlhack del interfaz de la abstracción  del Perl  IO del perlapio de las capas  
 

Información y articulos de interes emitidos por el diario “101 perl”

Para obtener información sobre temas relevantes y comentarios el diario 101 Perl dispone de suscripciones para profesionales que deseen contar con esta excelente herramienta, los precios son accesibles y ofrece varias alternativas a cada usuario.