Perl 中的哈希键顺序没有太多保证。在我找不到的文档中是否有任何提及会说只要两个哈希使用完全相同的键,它们就会以完全相同的顺序排列?
简短的测试似乎证实了这一点。即使我在分配给两个不同的哈希之间为内部键表生成了一些额外的键,它们的键也会以相同的顺序返回:
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