Los arreglos indexados funcionan como listas; se pueden añadir elementos o quitarlos de cualquier extremo usando las siguientes funciones :
pop quita el último valor del final del arreglo.
push añade valores al final del arreglo.
shift quita el primer valor al comienzo del arreglo.
unshift añade un valor al comienzo del arreglo.
Por ejemplo :
push (@list, $bar);
push(@list, @rest);
$tos = pop(@list);
while ( $arg = shift(@ARGV) ) { }
unshift ( @ARGV, 'zeroth arg', 'first arg');
rompe un string en un arreglo de nuevos strings. Se pueden dividir en expresiones regulares arbitrarias, limitar el número de campos que se dividió, y guardar los delimitadores.
@list = split(/[, \t]+/, $expr);
while (
($login, $passwd, $uid, $gid, $gcos,
$home, $shell) = split(/:/);
}
+ El comando inverso de split es
:
$line = join(':', $login, $passwd, $uid,$gid, $gcos, $home, $shell);
invierte una lista.
foreach $tick (reverse 0 .. 10) { }
regresa un nuevo arreglo con los elementos ordenados de acuerdo a sus valores ASCII.
print sort @list
sub numerically { $a - $b ; }
print sort numerically @list;
regresa una nueva lista conteniendo todos los elementos para los cuales resulta verdadera alguna expresión. Por ejemplo, esto borrará todas las líneas que tengan como primer caracter un # :
@lines = grep(!/^#/, @lines);
Para manejar arreglos asociativos, las funciones
y
regresan arreglos indexados de los índices y valores respectivamente. Cada uno es usado para iterar a través de un arreglo asociativo para obtener un par ($key,$value) cada vez.
while (($key,$value) = each %array)
{
printf "%s is %s\n", $key, $value;
}
foreach $key (keys %array)
{
printf "%s is %s\n", $key, $array{$key};
}
print reverse sort values %array