我想知道Perl中的foreach语句是否按照一致的顺序迭代数组中的项?也就是说,如果我在同一个数组或列表上多次使用foreach,我会得到不同的结果吗?
答案 0 :(得分:9)
是的,foreach
语句中的项目按顺序迭代。
您的问题可能源于对迭代元素的混淆:
my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) { print $key } ; # output is "cab"
但看似随机的顺序是如何将数据存储在Perl哈希表中的工件(Perl哈希表中的数据未被排序)。 keys
语句是“更改”哈希表的顺序,而不是foreach
。
答案 1 :(得分:1)
如果您不在两次之间更改列表,它将始终按照一致的顺序。
答案 2 :(得分:0)
为什么Perl的foreach循环哈希排序看似随机的原因在perlsec文档中,链接here