Tipos de variables en Perl
En perl hay tres tipos de variables:
- Escalares. Las variables comienzan por $, como $variable. Aquí se representan cadenas de texto o número.
- Arrays. Los arrays comienzan con @, como @variable. Puede meterse dentro lo que se quiera.
- Hash. Las hash comienzan con %, como %variable. Tanto las variables como los datos pueden ser cualquier cosa.
No es necesario declarar previamente las variables. Se utilizan según se necesitan. Por defecto todas son globales y se ven desde todos los sitios del código. Para declarar variables locales, se pone my delante.
Escalares[editar]
Se asignan, sin declarar, según se necesitan.
$var1 = 33; $var2 = "hola"; $var3 = "11"; my $var4 = "esta es local, no es globlal";
La conversión de número a string se hace automáticamente según se necesita
$var1 = 1; $var2 = "3"; print $var1 + $var2; # escribe la suma 4 print "\n"; # nueva línea print $var1.$var2; # concatena cadenas, escribe 13.
Si se usa una variable en un if, la variable es true si contiene algún valor distinto de 0 o de "". El false si contiene 0, "" o no está declarada.
$a=""; if ($a) # esto es false { ... }
Arrays[editar]
Una variable array comienza con @. Se puede inicializar poniendo valores entre paréntesis
$b = "un valor"; @array = ( 1, "dos", $b );
Si imprimimos un array, se escribirán todos sus valores
print @array; #escribe todo seguido "1dosun valor"
El último índice válido de un array se obtiene con $#array. Esto devuelve el último índice válido, no el número de elementos. Los ínidces empiezan en cero.
print $#array; #escribe 2, ya que @array tiene tres elementos #y los índices válidos son 0,1,2
Para acceder a los elementos de un array se utiliza el corchete.
print @array[1]; @array[2]="tres";
Podemos asignar un valor a un índice fuera de rango. Los rangos intermedios se rellenarán con valores nulos.
@array[5]="seis"; #esto no da error. Los indices 3 y 4 se rellenan con null
Se puede recorrer un array con un bucle for normal. Hay que fijarse que puesto que @#array devuelve el último índice válido, la comprobación en el bucle debe ser <=
for ($i=0; $i<=$#array; $i++) { print "@array[$i]\n"; }
Otra forma es usar foreach así
foreach (@array) { print "$_\n"; }
foreach recorre el array que se le pasa detrás y va metiendo cada uno de los valores del array en la variable $_
Para "resetar" un array y vaciar su número de elementos
@array = ();
Variables Hash[editar]
Las variables hash comienzan con %, como %hash. Sin embargo, salvo para inicializarlas, para acceder o modificar sus elementos se usan con @ como un array, pero en vez de corchetes [] se usan llaves {}
Se pueden inicializar de varias maneras. Una es como un array, en el que los elementos impares hacen de claves y los pares de datos
%hash = ( 1, "uno", 2, "dos", 3, "tres" ); print @hash{2}."\n"; # escribe dos @hash{4}="cuatro"; print @hash{4}."\n"; # escribe cuatro
Otra forma más clara de inicializarlo es así
%hash = ( 1 => "uno", 2 => "dos", 3 => "tres" );
La función keys() nos permite obtener las claves de un hash para recorrerlo
%hash = ( 1 => "uno", 2 => "dos", 3 => "tres" ); @claves=keys(%hash); foreach(@claves) { print "$_\n"; }
Se pueden borrar elementos de un hash con delete
delete @hash{2};