Conceptos Básicos

Perl "Practical Extraction and Report Language" es un lenguaje que permite manipular de una manera muy flexible cualquier archivo de texto que exista en un sistema, y considerando que Unix esta basado primordialmente en archivos de texto lo hace una herramienta complementaria perfecta.

Ejecución de Perl

Para ejecutar un programa en Perl es necesario que este inicie con: #!/usr/local/perl , esta linea indica la ubicación del interpretador Perl en el sistema (nótese la similitud con un archivo de Shell que debe iniciar con: #!/bin/sh ).

Lectura y Escritura de Datos

Perl por "default" lee variables e imprime resultados a lo que es denominado STDIN (Standard Input) y STDOUT (Standard Output), en otras palabras: la terminal (pantalla) en donde se esta ejecutando el programa, sin embargo, como se observará en otras secciones de esta guia el punto más fuerte de Perl es que es capaz de leer variables e imprimir resultados a archivos del sistema ("flat files") , lo cual lo hace un substituto limitado pero ideal para una base de datos .

Un Ejemplo y chomp

#!/usr/bin/perl
print "Que piensa de Perl ?"; 
$pensamiento = <STDIN> ;
chomp ($pensamiento);
print " Realmente piensa que perl $pensamiento ?\n";

Nótese que toda declaración termina en " ; " , para imprimir a pantalla se utiliza el comando print y para asignar variables se utiliza " $ ", la " \n " significa un salto de renglón; una función que merece atención especial es chomp , esta función elimina el salto de renglón " \n " que siempre es agregado a toda variable que es leída de STDIN, a continuación se muestra un diagrama, el programa de la parte superior utiliza chomp y la parte inferior no lo utiliza.

Perl y el uso de CHOMP

Declaración de arreglos y hashes

En perl también es posible declarar arreglos y "hashes" de texto, un arreglo es básicamente una lista de elementos , mientras un "hash" es una lista de elementos que permite asignar cierto valor a una variable.

Arreglos
#!/usr/bin/perl
@nacionalidades = ("mexicano","argentino","brasileiro");
....
$norte = $nacionalidades[0];
$centro = $nacionalidades[2];
$sur = $nacionalidades[1];
.....

El parámetro " @ " indica un arreglo, mientras los " [ ] " con el número de la lista son utilizados para referenciar el valor de la lista.También es posible declarar un arreglo sin la necesidad de " " , para esto se utiliza la función qw :

@nacionalidades = qw(mexicano argentino brasileiro);
"Hashes"

Los hashes a diferencia de los arreglos asignan un valor al elemento de la lista:

#!/usr/bin/perl
%sis_operativo = qw ( 
  linux económico 
  solaris oneroso
  windows frágil
  aix difícil
 );
....
....
$calificativo1 = $sis_operativo{linux};
$calificativo2 = $sis_operativo{solaris};
$calificativo3 = $sis_operativo{windows};
$calificativo4 = $sis_operativo{aix};
......
.....

El parámetro " % " define el inicio de un "hash", mientras los " { } " con el valor del "hash" son utilizados para llamar su valor.

Substituir y Traducir Elementos

Estas dos operaciones juegan un papel muy importante para Perl; suponga que esta actualizando un "flat file" con una lista de usuarios, seguramente antes de actualizarla establecerá un estándar como: todas las letras en minúsculas, eliminar puntos adicionales , o quizás desee eliminar todos los registros que tengan 6 meses de antigüedad automáticamente, estas funcionalidades son las que ofrecen las substituciones y traducciones en Perl.

Ambos elementos utilizan lo que es denominado "regular expressions" para substituir y traducir elementos, debido a que "regular expressions" es un tema muy amplio , solo se mencionaran algunas "regular expressions" con una pequeña explicación.

$domicilio =~ tr/a-z/A-z/; #Traduce todas las minúsculas de la variable $domicilio a mayúsculas 
$nombre =~ s/^/Nombre: /; # Anexar(substituir) al inicio de la variable $nombre el elemento Nombre:  

"Splits" y "Joins"

Los "Splits" y "Joins" también forman una parte muy importante al manipular información de archivos. Asumiendo que tiene el siguiente "flat file" separado por " : " es posible utilizar un "Split" para extraer su contenido.

$renglon = "gabriela:tabasco:mexico:32";
@parametros = split(/:/,$renglon);
# El  arreglo  contiene lo siguiente: 
# @parametros = ("gabriela","tabasco","mexico","32")
# y puede ser manipulado cada elemento dentro del arreglo @parametros

También es posible utilizar el elemento join para unir los elementos de un arreglo y anexar cualquier elemento especificado.

@parametros = ("gabriela","tabasco","mexico","32");
$renglon_unido = join(":", @parametros);
# La variable $renglon ahora contiene lo siguiente: 
#$renglon = "gabriela:tabasco:mexico:32";

En Perl también se pueden definir funciones y ciclos ( for,while's ), algunos serán mencionados conforme avance esta guia.