Perl のハッシュ キーの順序については、あまり保証されていません。2つのハッシュがまったく同じキーを使用している限り、それらはまったく同じ順序になると言う、私が見つけることができないドキュメントに言及はありますか?
短いテストでそれが確認されたようです。2 つの異なるハッシュへの割り当ての間に内部キー テーブル用に追加のキーを生成しても、それらのキーは同じ順序で返されます。
my %aaa;
my %bbb;
my %ccc;
my %ddd;
@aaa{qw(a b c d e f g h i j k l)}=();
# Let's see if generating more keys for internal table matters
@ccc{qw(m n o p q r s t u v w x)}=();
@bbb{qw(a b c d e f g h i j k l)}=();
# Just to test if different insertion order matters
@ddd{qw(l k c d e f g h i j a)}=(); $ddd{b} = ();
print keys %aaa, "\n";
print keys %bbb, "\n";
print keys %ddd, "\n";
ただし、udocumented の動作には依存しません。ドキュメントで簡単に見つけることができる唯一の事実は、ハッシュが変更されていない限り、すべて同じ順序を使用しkeys
ますvalues
。each