24 julio 2007

Jugando con Perl (3)

Ahora vamos a ver un poco sobre cómo manejar arrays (matrices, vectores) desde Perl.

La primera idea importante es que para declarar un array, el nombre de la variable no se precede con el símbolo de dolar ($) sino con la arroba (@), y los valores se detallan entre paréntesis, separados por comas:

@lista = (4, 3, 2, 1);

Se puede acceder a los valores individuales usando corchetes: el primer elemento sería @lista[0] y el cuarto sería @lista[3]. También se puede contar "hacia atrás": el último dato sería @lista[-1] y el penúltimo sería @lista[-2].

El tamaño se puede saber simplemente asignando el valor de un array a una variable "normal" (una variable "escalar", siguiendo la nomenclatura de Perl):

$longitud = @lista;

También existe una orden que permite recorrer una array de forma más sencilla que un "for". Se trata de "foreach", que se usa

foreach variable (lista) {
órdenes
}


por ejemplo

foreach $nombre (@listaNombres) {
print $nombre . "\n";
}


Este sería un ejemplo completo de todo ello:

@listaNumeros = (10,20,30,35);
@listaNombres = ("Juan", "Pedro", "Alberto");

print "Los numeros son: ";
for ($i=0; $i<=3; $i++) {
print @listaNumeros[$i] . " ";
}

print "\nLos numeros (de otra forma) son: ";
foreach $i (@listaNumeros) {
print $i . " ";
}

print "\nLos nombres son: ";
foreach $j (@listaNombres) {
print $j . " ";
}

print "\nEl primer nombre es: ".
$listaNombres[0] . "\n";

print "El ultimo numero es: ".
$listaNumeros[-1] . "\n";

$cantidadNumeros = @listaNumeros;
print "La cantidad de numeros es: ".
$cantidadNumeros . "\n";

@listaNumeros = ();
print "Ahora la cantidad de numeros es: ".
@listaNumeros . "\n";


que tendría como resultado:

Los numeros son: 10 20 30 35
Los numeros (de otra forma) son: 10 20 30 35
Los nombres son: Juan Pedro Alberto
El primer nombre es: Juan
El ultimo numero es: 35
La cantidad de numeros es: 4
Ahora la cantidad de numeros es: 0


El próximo día... las variantes en el manejo de if, while, etc...