Manual de PERL

CAPITULO 1


I. Introducción

    Perl (Practical Extraction and Report Language) es un lenguaje de programación desarrollado por Larry Wall (lwall@netlabs.com) a partir otras herramientas de UNIX como son:  ed,grep,awk,c-shell, para la administración de tareas propias de  sistemas  UNIX.

    No establece ninguna filosofía de programación concreta. No se puede decir que sea orientado a objetos, modular o estructurado aunque soporta directamente todos estos paradigmas y su punto fuerte son.las labores de procesamiento de textos y archivos.

   No es ni un compilador ni un interprete, esta en un punto intermedio, cuando mandamos a ejecutar un programa en Perl, se compila el código fuente a un código intermedio en memoria que se optimiza como si fuésemos a elaborar un programa ejecutable pero es ejecutado por un motor, como si se tratase de un interprete
 


II. Variables y datos

En PERL no hay que declarar los tipos de las variables.
Van precedidas por unos caracteres especiales como: $,@,%, que ya indican su tipo.
Se distingue entre minúscula y mayúsculas, por tanto,  $A y $a son distintas
 


Variables Escalares:

        Comienzan con el signo $y contienen datos de tipo escalar. Por escalar entendemos valores numéricos y/o alfanuméricos. Para la asignación se usa el signo igual (=) como en la mayoría de los lenguajes. En el caso de ser un valor alfanumérico (texto) este se escribe entres comillas. Al final de la asignación se debe escribir ";".

Ejemplos:

      # se asignan textos
      $animal="Gato";
      $color="blanco y negro";

      # se asigna un valor númerico entero
      $crias= 3;

      # se asigna un valor númerico con decimales
      $edad= 1.5;

     # se asigna un valor númerico con decimales. Incluso en notación científica.
     $edad= 1.5; $notacion=1.2E10;

     # números octales y hexadecimales
     $Octal=033;
     $Hex=0x19;

  Se pueden asignar valores entre variables:
     $animal1="Gato"; $animal2="Perro";
     $animal2=$animal1; quedaría así:  $animal2="Gato"

  Interpolar variables dentro de otra:
      $animal="Gato $color de $edad años";
      Sería igual que $animal="Gato blanco y negro de 1.5 años".

Asignar multiples valores a multiples variables:
     $A="Hola"; $B=","; $C="PERL";
     ($a,$b,$c) = ($A,$B,$C);

Las variables pueden actuar como númericas o alfanuméricas, según el caso. El cambio se realiza en función del signo más (+) o el signo punto (.).

    - Texto a número ( + ):

     $A="12"; $B=3; o  $A="12"; $B="3";
     $C=$A +$B sería igual a $C=15.

    - Número a texto ( ):

    $A="12"; $B=3; o  $A=12; $B=3;
    $C=$A.$B sería $C="123";
 

Se puede hacer asignación multiple de variables:
    $A="Hola"; $B=","; $C="PERL";
    ($a,$b,$c) = ($A,$B,$C); quedaría así: $a="Hola"; $b=","; $c="PERL";
 


Variables de matriz: arreglos

  Comienzan con el signo @ y contienen una lista de valores escalares (números y/o textos). Al ser una lista de valores para acceder a cada de uno estos se utiliza un número que indica su posición dentro de la lista. La numeración empieza en 0, y se coloca entre corchetes [ ]. A este número que indica la posición de un valor dentro de la lista del arreglo se denomina indice

            @animal=("gato","perro","vaca");

  $animal[0] sería "gato"
  $animal[1] sería "perro" y así hasta el último valor.

 También podemos hacer referencia a varios valores así:
 $animal[1..2] equivale a los valores de $animal[1] y $animal[2]
 $animal[1,2] equivale a los valores de $animal[1] y $animal[2]

    Como vemos para la asignación se usa el caracter @ y para acceder a un valor individualmente se utiliza el signo $, ya que en definitiva un arreglo está formado por distintas variables escalares.

    Una vez asignados los valores en esa lista estos pueden ser cambiados asignando nuevos valores a  las distintas variables que la forman.

$animal[0] ="ratón". Ahora el arreglo quedaría así: @animal=("ratón","perro","vaca");
Igual que con las variables escalares los arreglos también aceptan la interpolación de otros arreglos.
@pajaro=("gorrión","paloma","halcón","golondrina");
@animal=("ratón","perro","vaca",@pajaro);

Ahora @animal valdría:
@animal=("ratón","perro","vaca","gorrión","paloma","halcón","golondrina");


Asociada a las matrices (arreglos), existen algunas funciones que ayudan a poner o sacar elementos de la lista.
Colocar nuevos elementos al final de la lista: Sacar el último elemento del arreglo. Se asigna a una variable escalar.

            $sacado=pop(@animal);

Reemplazar el primer elemento del arreglo.

            unshift(@animal,"caballo");

Sacar el primer elemento del arreglo. Se asigna a una variable escalar.

            $sacado=shift(@animal);

Tenemos una notación especial para conocer el último índice del arreglo.

                    Del arreglo @animal=("ratón","perro","vaca","gorrión","paloma","halcón");
                  $#animal sería igual a 4.
 


Variables  matrices asociadas: "hashes"

  Comienzan con el signo %  y se tratan de matrices que se referencian por el par clave/valor. Como veremos a continuación los valores se introducen manteniendo una relación a pares. El primer valor es la clave o referencia del siguiente.

Se pueden asociar los valores a las matrices asociadas de 2 modos:

    %dia=(Lun,"Lunes",Mar,"Martes",Mie,"Miércoles",Jue,"Jueves",Vie,"Viernes",Sab,"Sábado",Dom,"Domingo");
    %dia=(
             Lun => "Lunes",
             Mar => "Martes",
             Mie => "Miércoles",
            Jue => "Jueves",
            Vie => "Viernes",
            Sab => "Sábado",
            Dom => "Domingo"
            );

La referencia a los valores se realiza mediante la variable escalar del la matriz asociada y sus claves (Lun,Mar,Mie,...).

  $dia{Lun} equivale a "Lunes", $dia{Sab} equivale "Sábado".

  La asignación de valores individuales se realiza así:

  $dia{Lun}="LUNES" o así $dia{"Lun"}="LUNES"

  Si recorremos la matriz asociada mediante algún algoritmo, los pares de valores no se muestran en el mismo orden de introducción; sólo se mantiene el orden del par clave/valor.


 

Al igual que con los arreglos, las matrices asociadas también tienen una serie de funciones asociadas, que facilitan su utilización:

    delete($matriz{clave}): Para borrar un par clave/valor de un "hash", utilizamos la función delete que usa como argumento la variable escalar y la clave del par a borrar.

    Ej: %lista(uno,"1",dos,"2",tres,"3");

   delete($lista{tres});

    values(Hash): Muestra todos los valores de la matriz asociada.

    Ej: %lista(uno,"1",dos,"2",tres,"3");

     print values(%lista); muestra todos los valores del "hash", sin mantener un orden determinado.

    keys(Hash): Muestra las claves de la matriz asociada.

    Ej: %lista(uno,"1",dos,"2",tres,"3");

      print keys(%lista); muestra todos las claves del "hash", sin mantener un orden determinado.

     each(Hash): Muestra un par clave/valor.

     Ej:%lista(uno,"1",dos,"2",tres,"3");

     print each(%lista); muestra sólo un par clave/valor de la matriz asociada.

    exists $lista{clave}: idem.

    Ej: $existe=exists $lista{dos}; Si existe, la variable $existe contendrá el valor 1.
    Ej: $existe=defined $lista{dos}; Si existe, la variable $existe contendrá el valor 1.

    defined $lista{clave}: indica si existe o está definida una determinada clave dentro de la matriz asociada.

   NOTA: Para mostrar ordenados los valores o claves se usa la función sort(...).Ej: printsort(keys(%lista));
 


 
Página anterior
Inicio de página
Página siguiente