Posso usare IxHash per ricordare l'ordine di inserimento di un hash.Come posso mantenere l'ordine di inserimento di un hash Perl annidato?
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
E l'hash annidato?
printf("keys %s\n", join(" ", keys %{$hash{q}}));
keys a2 a1 a3
ho il sospetto che la risposta è no, come l'hash q è anonimo e l'ordine viene perso prima IxHash vede.
So che posso eseguire Tie su $ hash {q} e quindi aggiungere gli elementi, ma mi piace usare il singolo compito per creare l'hash.
C'è un trucco?