Tôi có thể sử dụng IxHash để nhớ thứ tự chèn của một băm.Làm cách nào để giữ lại thứ tự chèn của một hàm băm Perl lồng nhau?
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
Làm thế nào về hàm băm lồng nhau?
printf("keys %s\n", join(" ", keys %{$hash{q}}));
keys a2 a1 a3
Tôi nghi ngờ câu trả lời là không có băm q ẩn danh và đơn đặt hàng bị mất trước khi IxHash nhìn thấy.
Tôi biết rằng tôi có thể thực hiện Tie trên $ hash {q} và sau đó thêm các phần tử, nhưng tôi thích sử dụng lệnh gán duy nhất để tạo băm.
Có mẹo nào không?