A continuación se presenta una recopilación de la información más relevante e importante sobre el Lenguaje Perl

En la Infografía se presentan ocho papers referentes a este tema

 

   

 Contenido

*   ¿Qué es Perl?

*   ¿Para qué sirve? - ¿ Dónde puede usarse?

*   ¿Cómo se hace un programa en Perl?

*   Operadores en Perl

*   Variables en Perl

*   Estructura Básica de un Programa

*   Línea del tiempo Perl

*   Infografía

  

 

¿Qué es Perl?

 

            Siglas de Practical Extraction and Reporting Language, algo así como Lenguaje Práctico de Extracción y de Informes.  Perl es un Lenguaje desarrollado por Larry Wall (por cierto que es uno de los net.gods más conocidos en la actualidad), que estructuralmente presenta una mezcla de elementos del lenguaje C y de sentencias del entorno UNIX.  Este es uno de los lenguajes más utilizados para la creación de programas CGI en los servidores Web.  Perl es más rápido que los programas shell script de UNIX, puede leer y escribir ficheros binarios, y puede procesar ficheros grandes.  Es un lenguaje especialmente útil para llevar a cabo procesos con ficheros y cadenas de texto, tareas de mantenimiento en sistemas UNIX y entornos de redes, y programación de scripts-cgi en la World Wide Web.

 

         Perl es un lenguaje interpretado, aunque en realidad, el intérprete de Perl, como todos los intérpretes modernos, compila los programas antes de ejecutarlos.  Por eso se habla de scripts, y no de programas, concepto referido principalmente a programas compilados al lenguaje máquina nativo del ordenador y sistema operativo en el que se ejecuta.

 

         Las ventajas más importante de Perl son:

 

*  Perl no necesita ser recopilado.  

*  Construcción de pequeños programas que pueden ser usados como filtros para obtener información de ficheros, realizar búsquedas, ...

*  También es uno de los lenguajes más utilizados en la programación CGI scripts, que son guiones o scripts que utilizan el interface CGI (Common Gateway Interface), para intercambio de información entre aplicaciones externas y servicios de información.  Como  ejemplo de ello tenemos los programas de búsqueda usados por el browser Netscape.

*  Se puede utilizar en varios entornos, como puede ser Windows 95, OS/2,..., sin realizar cambios de código, siendo únicamente necesario la introducción del intérprete PERL correspondiente a cada sistema operativo.

*  El mantenimiento y depuración de un programa en PERL es mucho más sencillo que la de cualquier programa en C.

 

         A pesar de que la versión actual del intérprete de Perl es la 5, es muy habitual, sin embargo, encontrar la versión 4.036, el último patchlevel de la versión 4 y probablemente el más estable.  Actualmente, en enero del 2000, la versión 5.005 es suficientemente estable como para usarla en cualquier plataforma.  La versión 5 es prácticamente compatible 100% con la 4; virtualmente todos los scripts que funcionan para la versión 4 lo hacen también en la 5. 

 

 

Volver al principio

 

 

¿Para qué sirve?

 

            Prácticamente, sirve para todo.  Todas las tareas de administración de UNIX se pueden simplificar con un programa en Perl.  Se usa también para tratamiento y generación de ficheros de texto.  También hay proyectos completos y complejos escritos en Perl, pero son los menos.

 

         La forma del lenguaje facilita la programación rápida y sucia, el hacer un programa rápido para que funcione.  Esto hace también que se utilice para hacer prototipos rápidos de algún algoritmo que queremos ver funcionar antes que tomarnos la molestia de programarlo en un lenguaje más eficiente, como el C++.  Y últimamente ha encontrado su aplicación la escritura de CGI o scripts ejecutados desde páginas de la World Wide Web.  La mayoría de los programas que se encuentran uno para procesar formularios en la Internet llevan la extensión .pl, lo cual denota que están escritos en Perl.

 

         Surge como una opción para una gran cantidad de herramientas de UNIX en las cuales basa su propia sintaxis, buscando el mínimo sacrificio de su desempeño por una máxima facilidad de programación e integración, sigue la filosofía de mantener un ambiente que sea capaz de detectar y corregir pequeñas omisiones del programador, y de proporcionarle una forma abreviada de realizar múltiples tareas.  En una palabra, es una utilería que pretende facilitar el proceso de grandes volúmenes de información sin sacrificar el rendimiento.

 

¿Dónde se puede usar?

 

          Las plataformas donde Perl se ha desarrollado más son los servidores UNIX, por sus necesidades de administración y lo robusto de su manejo de memoria y de procesos (requisitos de PERL hacia el SO) además de la facilidad de Perl para realizar los así llamados CGIs, interfaces para comunicar recursos del servidor con un servidor de Internet particular (como podría ser WWW o gopher).  En otras plataformas, PC en particular, se han desarrollado versiones que mantienen un razonable grado de funcionalidad, pero en realidad, el sistema DOS no tiene un manejo lo bastante bueno de los procesos o de la memoria para permitir a Perl dar un buen desempeño, además de que no es común ver en PC necesidades de administración de la magnitud de un servidor institucional.  Sin embargo, puede practicarse la programación en Perl de PC, o incluso elaborar programas de reporteo en él, sin embargo, es algo que no se ha popularizado hasta hoy.

 

Volver al principio

 

 

 

¿Cómo se hace un programa en Perl?

 

         Basta con escribir las instrucciones que lo componen con un editor de texto, y grabarlo como fichero de texto “ASCII” (texto simple, sin formato tipo Word o Word Perfect, etc.).  Las siguientes líneas son un ejemplo de un programa Perl:

        

         ($segundos, $minutos, $hora, $dia, $mes) = localtime;

         print “Son las $hora:$minutos\n”;

 

         Los tipos de datos que se pueden utilizar en el Perl son:

 

*  Escalares

*  Array de Escalares

*  Array Asociativos de Escalares

 

          El tipo de dato Escalar es denotado mediante un nombre de variable precedido del símbolo $, y puede contener un número, una cadena de caracteres y una cadena de caracteres en la que alguno de los caracteres puede ser un carácter especial.  Por ejemplo, si queremos definir una variable de tipo escalar llamada número y que contenga un número 12 haríamos:  $numero = 12;

 

          Para almacenar una cadena de caracteres podemos hacer dos cosas:

 

*  Definir el contenido entre comillas simples, no interpretándose ningún caracter especial contenido entre ellas, un ejemplo podría ser:  $palabra = ‘perros’;

*  Definir el contenido entre comillas dobles, interpretándose cualquier caracter especial contenido entre ellas a la hora de la impresión de la cadena, un ejemplo podría ser: 

$palabra = “perros\n”;

 

          Por último, se puede definir varias variables al mismo tiempo utilizando los paréntesis, por ejemplo:

 

          ($palabra, $palabra2, $palabra3) = (“Juan”,”Pepe”,”Luis”);

 

          El tipo de dato Array de Escalares es denotado mediante un nombre de variable precedido del símbolo @.  Un ejemplo de inicialización de una variable de este tipo podría ser:

 

          @Frutas = (“manzana”,”pera”,”naranja”,”fresa”)

 

          El número de elementos menos uno de un array de escalares se puede obtener mediante el nombre de la variable precedido de los símbolos $#, por ejemplo si se quiere obtener el número de elementos de @frutas se haría:

 

          $numero_de_elementos = $#frutas+1;

 

          Para ser más exactos $# devuelve el último índice del array, así, si el valor para el primer índice es 0 el número de elementos – 1 será el último valor permitido para indexar el array.  El acceso a un elemento de un array se hace mediante un índice numérico de la forma $nom_variable [ índice ]; así, si se quiere acceder al tercer elemento de @frutas se haría:

 

          $2 elemento = $frutas[2];

 

          También se puede acceder a varios elementos de un array de la forma @nom_variable [indice1,...,indicen]; por ejemplo:

 

          Print @frutas[1,2];  imprimirá el elemento segundo del array @frutas.

 

          Otra forma de indexar un array es usando el operador rango.., si se quiere imprimir todos los valores desde un índice i hasta un índice j, se deberá utilizar el siguiente formato @nom_variable[i..j], por ejemplo:

 

          Print @frutas[0..2];  imprimirá todos los elementos del array @frutas.

 

          Por último se tiene el tipo de dato Array Asociativo de Escalares, mediante este tipo de datos podemos acceder a un determinado elemento de un array a través de una clave anteriormente definida, para denotar este tipo de dato se debe preceder al nombre de la variable con el símbolo %.  Un ejemplo de definición de claves y valores de un determinado array asociativo podría ser:

 

          %precio = (“manzana”,100,”pera”,20,”naranja”,30,”fresa”,200);

 

          Si se quiere acceder a un elemento de un array asociativo, se debe seguir el siguiente formato @nom_variable {clave}, un ejemplo podría ser:

 

          $numero de manzanas=10;

          $gasto = @precio {“manzana”} * $numero de manzanas;

 

 

 

Volver al principio

 

 

Operadores en Perl

 

*  Operadores de Comparación:  mediante estos operadores se pueden enfrentar dos expresiones, de manera, que dependiendo de su valor se genera un resultado que puede ser lógico o numérico.  Perl tiene los siguientes operadores de comparación:

    ==  Este operador sirve para comparar dos valores iguales, de manera que cuando las expresiones a su izquierda y su derecha son iguales, devuelve un valor lógico verdadero y cuando no lo son devuelve falso:

if ($var == 3) {...}

                  

    eq.  Es empleado para comparar expresiones no numéricas, esto es, se utiliza de igual manera que == pero para cadenas.

 

    !=  Con este operador se comparan cantidades numéricas diferentes. 

If ($var != 3) {…}

 

    ne.  Se utiliza para comparar cantidades no numéricas diferentes.  Su funcionamiento es similar que el de !=.

 

    <  Verifica el valor de una cantidad numérica con respecto del valor de la expresión de la derecha, de modo que si el valor d esta expresión es mayor que el de la cantidad numérica se devuelve cierto, en caso contrario se devuelve falso:

if ($var < 3) {...}

 

    >  Verifica el valor de una cantidad numérica con respecto del valor de la expresión de la derecha, de modo que si el valor de esta expresión es menor que el de la cantidad numérica se devuelva cierto, en caso contrario se devuelve falso:

if ($var > 3) {...}

 

    cmp.  Este término es utilizado para comparar caracteres, de manera que, retorna 0 si los caracteres comparados son iguales, 1 si la cadena de la derecha se encuentra al comienzo de la izquierda, y –1 en el caso contrario:

‘one’ cmp ‘one’

devuelve 0

         ‘one dog’ cmp ‘one’

devuelve 1

         ‘dog one’ cmp ‘one’

devuelve –1

         ‘es diferente’ cmp ‘one’

devuelve –1

 

    <=>  Este término es utilizado para comparar valores numéricos, retornando 0 cuando son iguales, 1 cuando el término de la derecha es menor que el de la izquierda y –1 en el caso contrario.

 

    =%  Este término es usado en las expresiones regulares para indicar la presencia de un patrón de comparación dentro de una variable que contiene una cadena de caracteres:

if ($var =%/pepe/) {...}

 

    !%   Mediante este operador se verifica la no existencia del patrón de búsqueda en una cadena: 

if ($var !%/pepe/) {...}

 

si la cadena ‘pepe’ no está en var se ejecuta el código entre llaves

 

*  Operadores de Asignación:  los términos de asignación se utilizan en Perl para dar valores a cualquiera de las variables válidas en Perl.  Existen en Perl los siguientes operadores de asignación:

    =  Con este término se asigna a la variable que se encuentra a la izquierda del operador el valor de la expresión de la derecha.  Así mediante este valor se pueden dar valores iniciales a cualquier variable: 

$var = ‘Buenos días’;

 

asigna la cadena Buenos días a la variable var.

 

    =%  A parte de la función de verificación de existencia de un patrón dentro de una cadena que anteriormente se explico, este operador dentro de una expresión regular de sustitución se utiliza para sustituir un patrón de comparación por otra cadena: 

$var =% s/one/uno/;

 

se reemplaza la ocurrencia de la cadena ‘one’ por la cadena ‘uno’.

 

*  Operadores Aritméticos:  Mediante estos términos se realizan las operaciones aritméticas necesarias para el manejo de las expresiones.  A parte de los operadores aritméticos comunes; + (suma), - (resta), * (multiplicación) y / (división), Perl también incluye los siguientes operadores:

 

    **  Este término se emplea para obtener la potencia de un valor numérico, ejemplo: 

$var = 6;

$var**2;

 

el valor almacenado en var es 36.

 

    .  Este término se emplea para concatenar dos cadenas de caracteres, ejemplo: 

$var = ‘Juan’;

$var . ‘Ramírez’;

 

var contendrá la cadena Juan Ramírez.

 

    x   Este término multiplica n veces la cadena de caracteres especificada, ejemplo: 

‘d’ x 20;

 

expresa una cadena de 20 caracteres d.

 

    %  Permite obtener el módulo de la división entre dos números, ejemplo:

$var = 5 % 2;

 

el valor que se asigna a var es 1.

 

    ¡  Este término cuando se emplea entre 2 valores numéricos, permite realizar una operación binaria ‘0’ entre ellos, ejemplo: 

$var = 3 ¡ 2;

 

el valor que se asigna a la variable es 3.

 

 

Volver al principio

 

 

Variables en Perl

 

*  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 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:

 

                   $saludo = “Hola Mundo”;

                   print $saludo;

                   $saludo = “Adiós Mundo”;

                   print $saludo;

                   $saludo = 100

                   print $saludo + 10

 

          El resultado impreso sería:

                   Hola Mundo Adiós Mundo 110

 

          Para añadir saltos de línea se debe utilizar al final de cada instrucción de print el siguiente código: \n y así se visualiza el mensaje en líneas separadas.

         

*  Variables Especiales

     $_ Almacena la línea completa que ha sido leída.

     $` 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:

              $_ = “Me gustan las Fresas y el Chocolate”;

              /Fresas/;

              print $, “\n”;#”Me gustan los”

              print $,”\n”;#”y el Chocolate”

              print $&, “\n”;#”Fresas”

              print $`.$&.$’;#Igual que $_

 

*  Variables 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.    Ejemplo:

 

              #Edición directa con Perl

              #Buscar y reemplazar todas las cadenas html por HTML

              #Teclear: Perl edicdir.pl <unhtml.htm doshtml.htm

 

                  $ÙI = “.bak”;

                  while (<>) {

                  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 html para una nueva ejecución.

 

*  Valores:  Los valores son las cosas que uno mete a las variables.  En Perl los valores se guardan separados de las variables e incluso cada valor tiene un contador que indica cuantas variables lo están usando.  Cuando el contador es cero el valor desaparece.  Los valores más usados son:

    STRING:  Los String pueden escribirse con comillas dobles o simples

 

$a = “abcd”:

$a = ‘abcd’;

 

Cuando se usa doble comilla se pueden intercalar variables escalares y arreglos.  En el resultado final la variable se sustituye por su valor.

 

    LISTAS:  Por ejemplo:

 

$a = (2, 7, ‘sss’);

# $a queda con el último valor: ‘sss’

 

@a = (2, 7, ‘sss’);

$a = @a;

# $a queda con el número de elementos de @a: 3

 

note que (2, 7, ‘sss’) es un valor, mientras que @a es un arreglo (recuerde que las variables y los valores son dos cosas distintas)

 

Existen abreviaturas para algunas listas:

 

$a = (2..7);

# $a queda con (2,3,4,5,6,7);

 

$a = (‘a’..’e’);

# $a queda con (‘a’,’b’,’c’,’d’,’e’)

 

    STRINGS con Comillas:  Las comillas invertidas se comportan como en los shelles de UNIX. Entre las comillas invertidas se pueden intercalar variables escalares.  Entre las comillas dobles se puede intercalar comillas invertidas.  Asociar un valor con una variable se llama bind.

 

 

 

Volver al principio

 

 

 

Estructura Básica de un Programa

 

Perl no obliga a casi nada, pues, lo que planteo como estructura básica es más bien una convención que un requisito del lenguaje, a diferencia de Pascal (por ejemplo) Perl no tiene una plantilla para sus programas y si se adoptan algunos protocolos es sólo por comodidad.

 

Los programas de Perl, por lo regular, inician con la línea:

 

#!/usr/bin/perl

Esta línea, indica al Sistema Operativo que lo que sigue es un script de Perl, y que “Perl” (el programa con el cual debe ejecutarse) está en el directorio “/usr/bin”, la secuencia “#!” es una secuencia que UNIX reconoce, no Perl.

 

Un método alterno, que funciona para otras plataformas, es: en lugar de colocar esa primera línea ejecutamos:

 

Perl nombre_del_script.pl de modo que directamente se ejecuta el intérprete de Perl pasándole como primer parámetro el script a ejecutar (los demás parámetros se tomarán como parámetros al programa).  Si se requiere deberá sustituirse “Perl” por la ruta completa del programa y el nombre que el programa tenga.  Para los ejemplos sucesivos, se tomará la suposición de que se trabaja en un Sistema UNIX con el intérprete de Perl en el directorio “/usr/bin”.

 

Y eso es toda la estructura básica.

 

Programa Hola mundo:

 

#!/usr/bin/perl

print “Hola a Todo el Mundo\n”; #Saluda

#Programa Hola a todo el Mundo, María Salcedo, 2001, como parte del diseño de la página web de los conocimientos básicos de Perl

Este programa, se escribe como un archivo de texto común y su ejecución será posible si lo diseño en Perl, aquí sólo se visualiza el ejemplo del programa.

 

La ejecución en un Sistema UNIX podría verse como sigue a continuación:

 

>chmod 700 Hola.pl

>Hola.pl

Hola Todo el Mundo

>Hola.pl

Hola Todo el Mundo

>

 

#!/usr/bin/perl

Esta línea no es parte del script de Perl, sino una instrucción al Sistema Operativo para indicar que las siguientes líneas deberán interpretarse por el programa “usr/bin/Perl”, si se omite, o no funciona en el sistema operativo, podemos ejecutar el programa de la siguiente forma:

 

>/usr/bin/Perl Hola.pl

Hola Todo el Mundo

>print “Hola Todo el Mundo\n”; #Saluda

Esta es la única instrucción del programa y está acompañada por un comentario, la instrucción es:

 

print “Hola Todo el Mundo\n”;

Que pudo ser escrita como:

 

print (“Hola Todo el Mundo\n”);

sin que esto implicara el mínimo cambio en funcionalidad.

 

A continuación se muestra el comentario:

#Saluda

 

 

 

Volver al principio

   

Seguridad  E-Commerce

 

Página Principal