Postgrado en Redes y Telecomunicaciones
Cátedra Herramientas Web para la Ciencia y Tecnología


PERL

 

 











INTRODUCCION AL LENGUAJE PERL

    Principalmente, 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.

    Perl 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.

    Es una combinación de las características de los lenguajes más usados por los programadores de sistemas, como son los shell del sistema operativo UNIX, los utilidad (que incluye un lenguaje interpretado propio) awk para formateo y tratamiento de texto e incluso caracteristicas de Pascal, aunque su potencia se basa en la similitud con las mejores características del lenguaje estructurado C. En general cualquier utilidad que se necesite realizar en sh, awk, o sed, se puede implementar de una manera mas potente y sencilla mediante el lenguaje PERL

    Hay versiones de Perl para casi todas las plataformas que existen e incluso para Linux, con el se disfuta de la mayoria de funciones del lenguaje, y su uso está muy extendido en Internet, aunque no podemos olvidar que Perl nació en el entorno Unix como una herramienta auxiliar de rastreo de archivos y extracción de información, como su propio nombre lo indica.

    PARÁMETROS DEL PERL

    Para ejecutar el intérprete basta con teclear Perl en la línea de comando, seguido opcionalmente de parámetro/s, sentencia o programa de extensión .pl.

  1. Conocer la versión del intérprete de Perl.
    El parámetro -v hace que el intérprete muestre la versión del mismo. C:\>PERL -v
    Ejemplo: This is perl, version 5.001
    Unofficial patchlevel 1m.
    Copyright 1987-1994, Larry Wall Win32 port Copyright (c) 1995
    Microsoft Corporation. All rights reserved. Developed by hip
    communications inc., http://info.hip.com/info/
    Perl for Win32 Build 108 Built Jun 28 1996@13:37:45

  2. Ejecución de scripts con Perl en la línea de comando. C:\>PERL nombre.pl
    Ejecuta el script o programa nombre.pl
    C:\>PERL -e "print 'Hola';"
    El parámetro -e ejecuta la expresión como un programa de una línea.
    C:\>PERL -n -e "print if /expresión/;"
    Ejecuta la expresión como un programa de bucle repetitivo. También, puede indicarse -ne en vez de -n -e.
    Ejemplo: Tenemos el fichero SALUDO.TXT que contiene 4 líneas:
    Hola, Mundo...
    ...Adios, Mundo.
    Hola Mundo, otra vez.
    Adios Mundo.
    Para visualizar las líneas usando -ne, teclear:
    C:\>PERL -ne "print" saludo.txt
    (Hace lo mismo que la orden TYPE del DOS).

  3. Para Programas en Perl.puede usar cualquier editor de textos, aunque hay algunos hechos a medida como WinPerl.
    La extensión de los archivos creados será .pl Ejemplo: "Hola mundo". (hola.pl) Editar hola.pl e insertar una línea con: print "Hola Mundo"; (Al finalizar cada línea es obligatorio escribir 'punto y coma').
    Guardar y ejecutar tecleando:
    C:\> PERL hola.pl
    Resultado: Hola Mundo

    MODELOS DE BUSQUEDA
    Modelos básicos.

    Mediante modelos de caracteres podemos explorar archivos y visualizar las ocurrencias de un determinado modelo. Los modelos se expresan escribiéndolos entre dos barras: /expresión/ Vamos a probar directamente desde la línea de comando... Ejemplo: Del archivo SALUDO.TXT queremos visualizar las líneas que contengan la palabra "Hola". Teclear: C:\>PERL -ne "print if /Hola/;" saludo.txt

    Resultado:
    Hola, Mundo...
    Hola Mundo, otra vez.
    Ejemplo: Del archivo SALUDO.TXT queremos visualizar las líneas que contengan al menos un punto. Teclear:
    C:\>perl -ne "print if /./;" saludo.txt
    Resultado:
    Hola, Mundo...
    ...Adios, Mundo.
    Hola Mundo, otra vez.
    Adios Mundo.

    Otros ejemplos: el fichero AVERIAS.TXT nos servirá para utilizar nuevas formas de búsqueda y conocer parte de la potencia de Perl en este tema: - Extraer las averías de Luis López.
    C:\perl>perl -ne "print if /Luis López/;" averias.txt
    - Extraer todas las averias de la marca HP.
    C:\perl>perl -ne "print if /HP/;" averias.txt

    Modelo de Clase [aeiou]..

    Se usa para establecer un rango de caracteres permitidos.
    /bar.[aeiou].*/ # barca, barquero, barcelonés, bares, abarcar
    /c[ao]../ # cara, cosa, cata, cala, coto, cana, cono
    /[0-9]/ # 0,1,2,3,4,5,6,7,8,9
    /[A-Z][a-z]/ # Aa, Za, Jk, Lm ...
    /[a-zA-Z]/ # a, A, B, J, Z ...
    /[A-CJ-L2-5]/ # A, B, C, J, K, L, 2, 3, 4, 5
    /[^a-c].*/ # diente, zoo (cualquiera que no empiece por a,b o c)
    /SE-[^A-Za-z]{4}-[^0-9]?/ # SE-0001-C, SE-8887-BJ, SE-1100-DA

    Modelo de alternativa / | /.

    Se usa para indicar opciones alternativas en un módelo de búsqueda.
    /No fu|Si ca/ # No fumo, Si canto, No futbol, Si carros
    /chicos/chicas/ # llegaron chicos, van chicas, las chicas
    /No (fum|ju).*ar/ # No fumigar, No fumar, No jurar, No jugar

    Carácteres especiales para modelos.
    ^ El modelo comienza al principio de la cadena.
    $ El modelo termina al final de la cadena.
    \r Retroceso de carro, 13 decimal ASCII.
    \n Alimentación de línea 10 decimal ASCII en UNIX. 13+10 en DOS
    \t Tabulación, TAB, 9 decimal ASCII.
    \f Alimentación de página, 12 decimal ASCII.
    \d Dígitos. Equivale a [0-9].
    \D No dígitos.
    \w Alfanumérico [a-zA-Z0-9_] (incluida barra subrayado).
    \W No alfanumérico.
    \s Espacio en blanco (incluye espacio, \t, \r, \n, \f).
    \S Negación de \s. \b Límite ini-fin de palabra; coincide con puntuación, \s o \w.
    \B Negación de \b.
    Ejemplos:
    /^\d+\t/; # comienzo de cadena por uno o más digitos seguidos de tab.
    /\D$/; # cualquier cadena que termine en algo que no sean números.

    Otros modelos útiles.
    Modelo =~.
    Modelo //i.
    Modelo s///.
    Modelo s///g.
    Modelo tr///.
    Modelo (Subexpresión) $1 $2...
    Modelo s///e.

    VARIABLES
    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.
    Otro ejemplo (holavar.pl):
    $saludo = "Hola Mundo";
    print $saludo;
    $saludo = "Adios Mundo";
    print $saludo;
    $saludo = 100
    print $saludo + 10;
    Ejecutar para ver el resultado: HolaMundoAdiosMundo110
    (¡Todo en una línea! ¡Qué feo queda!)
    Vamos a arreglarlo añadiendo un salto de línea con \n al final de cada línea (holasal.pl).
    $saludo = "Hola Mundo\n";
    print $saludo;
    $saludo = "Adios Mundo\n";
    print $saludo;

    Variables especiales.
    $_ Almacena la línea completa que ha sido leido.
    $` 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 ) { s/html/HTML/g; print; } # Si quieres probar otra vez teclea COPHTML.BAT # Este fichero copia unhtml.hhh a unhtml.htm y doshtml.hhh a doshtml.htm # reconstruyendo ambos htmls para una nueva ejecución


    INFOGRAFÍA

    Es un lenguaje cuyo fin es principalmente la exposición de cadenas
    http://www.htmlpoint.com/perl/
     
    Perl es un lenguaje que hereda ciertas estructuras de los intérpretes de comandos de UNIX.
    http://geneura.ugr.es/~jmerelo/tutoperl/tutoperl0.html

     
    Modelos de Busquedas Mediante modelos de caracteres podemos explorar archivos y visualizar las ocurrencias de un determinado modelo.
    http://usuarios.lycos.es/asualam/perl/tutor.htm
     
    Curso de perl
    http://www.oocities.org/SiliconValley/Station/8266/perl/