
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
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
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";
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"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.
$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]
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");
@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");
Del arreglo @animal=("ratón","perro","vaca","gorrión","paloma","halcón");Colocar nuevos elementos al final de la lista:
push(@animal,"toro","oveja");
push(@animal,@pajaro);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.
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));
|
|