Ich kann IxHash verwenden, um die Einfügereihenfolge eines Hash zu erinnern.Wie kann ich die Reihenfolge der Insertion eines verschachtelten Perl-Hashes beibehalten?
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
Wie wäre es mit dem verschachtelten Hash?
printf("keys %s\n", join(" ", keys %{$hash{q}}));
keys a2 a1 a3
Ich vermute, die Antwort ist nein, da der q-Hash anonym ist und die Reihenfolge ist verloren, bevor IxHash es sieht.
Ich weiß, dass ich Tie auf $ Hash {q} tun kann und dann die Elemente hinzufügen, aber ich mag die Verwendung der einzelnen Zuordnung, um den Hash zu erstellen.
Gibt es einen Trick?