Using perl Syntax Highlighting
#!/usr/bin/perl
my %mzdata= (
'59932' => '20-01-2011 AL 26-01-2011',
'57,437.00' => '30-12-2010 AL 05-01-2011',
'221,189.00' => '13-01-2011 AL 19-01-2011',
);
for my $llave (reverse(sort { $a <=> $b } keys %mzdata)) {
printf("%s %.2f\n", $mzdata{$llave}, $llave);
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Sale:
Using text Syntax Highlighting
20-01-2011 AL 26-01-2011 59932.00
13-01-2011 AL 19-01-2011 221.00
30-12-2010 AL 05-01-2011 57.00
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y ya sale ordenado numéricamente en orden inverso.
La función sort(), por defecto, solo hace ordenación alfabética, no numérica. Por eso tenemos que poner la subrutina
{ $a <=> $b }, para indicar que la ordenación debe usar el operador numérico '<=>'.
Otro detalle... nos podemos ahorrar el reverse() si cambiamos un poco más la subrutina del sort():
Using perl Syntax Highlighting
for my $llave (sort { $b <=> $a } keys %mzdata) {
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Cambiando el orden de $a y $b, indicamos si el orden es ascendente o descendente.
Finalmente... no hace la comparación con los seis dígitos... porque las ',' no forman parte de un número. Debes quitarlas antes.