Estoy bloqueado con un problema relacionado con la ordenación de un hash.
Tengo un hash de dos niveles, algo como:
Using perl Syntax Highlighting
%mihash = {
'llave1' => { 'subllave1' => valor1,
'subllave2' => valor2,
'subllave3' => valor3},
'llave2' => { 'subllave1' => valor1,
'subllave2' => valor2,
'subllave3' => valor3},
...
}
'llave1' => { 'subllave1' => valor1,
'subllave2' => valor2,
'subllave3' => valor3},
'llave2' => { 'subllave1' => valor1,
'subllave2' => valor2,
'subllave3' => valor3},
...
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
El caso es que quiero escribir en un fichero el contenido de dicho hash, pero ordenado según el valor de 'subllave3' de forma decreciente.
He intentado algo como:
Using perl Syntax Highlighting
foreach my $key (sort {$mihash{subllave3}{$b} <=> $hash{subllave3}{$a} } keys %mihash )
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Pero no funciona...
Me imagino que debo añadir un nivel mas, algo así como:
Using perl Syntax Highlighting
foreach my $key (sort {$mihash{llave}{subllave3}{$b} <=> $hash{llave}{subllave3}{$a} } keys %mihash )
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Pero el problema está en que la llave primaria de mi hash es una variable $var, por lo cual no sé cómo referenciarla (es decir, no tiene un nombre conocido por el programa como "subllave3").
¿Alguien me puede echar una mano?
¡¡Un saludo!!
Felipe