Puedo usar IxHash para recordar el orden de inserción de un hash.¿Cómo puedo conservar el orden de inserción de un hash Perl anidado?
use Tie::IxHash;
my %hash;
tie(%hash, 'Tie::IxHash');
%hash = (
x => 10,
z => 20,
q => { a1 => 1, a3 => 5, a2=>2,},
y => 30,
);
printf("keys %s\n", join(" ", keys %hash));
=> keys x z q y
¿Qué tal el hash anidado?
printf("keys %s\n", join(" ", keys %{$hash{q}}));
keys a2 a1 a3
Sospecho que la respuesta no es como el q hash es anónimo y el orden se pierde antes de IxHash lo ve.
Sé que puedo hacer un empate en $ hash {q} y luego agregar los elementos, pero me gusta usar la única tarea para construir el hash.
¿Hay un truco?