[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