[bcn-pm] ordenar datos
Tim Allen
zeno at timallen.org
Sat May 17 16:37:26 CDT 2003
La idea de Francesc parece bien-- lo he comprobado con esto. Parece que se
podría extender si tuvieras más columnas:
use strict;
my @data;
my $cuenta = 0;
# Cargar los datos en un hash de hash
while (<DATA>)
{
chomp;
($data[$cuenta][0], $data[$cuenta++][1]) =
split(/\s+/);
}
# Lo siguiente es una manera corta de hacer
# un bucle for sobre el array
map {print $_->[0] . "\t" . $_->[1] . "\n"}
(sort {por_columna($a,$b)} @data);
# la subrutina puede ser anónimo, pero lo puedes
# declarar también si te es útil (e es más
# facil leer
sub por_columna
{
# no declares los $a y $b con "my" sino con
# "local"--
# se pueden dejar sin declarar también
local ($a,$b) = @_;
return (($a->[0] cmp $b->[0]) or
($a->[1] cmp $b->[1]));
}
__DATA__
hola adeu
pepe sol
quetal bye
pepe llueve
hola sailor
linux debian
More information about the Barcelona-pm
mailing list