Perl中哈希表的迭代顺序?

时间:2015-01-29 03:25:44

标签: perl

当在具有相同操作序列的相同环境(也是相同的包含数据)中运行时,是否保证哈希表将以固定顺序迭代(keys %hashtable)?

2 个答案:

答案 0 :(得分:5)

没有。即使在某些版本上它在实践中也是如此,但是从来没有任何 promise 以任何特定顺序生成散列键,并且开发人员总是根据任何给定的顺序发出警告。从版本5.18开始,任何两次运行的订单几乎总是不同。

承诺的是keys %hashvalues %hash将按相应的顺序生成结果( n 键对应于 n th value),只要在此期间未修改%hash

答案 1 :(得分:1)

它取决于perl版本和环境。

在版本5.18中,行为已更改,即使在一个接一个的两个查询中也可以更改订单 这可以通过PERL_PERTURB_KEYS环境变量

来控制

你可以在这里查看更多信息

https://metacpan.org/pod/release/RJBS/perl-5.18.0/pod/perldelta.pod#PERL_PERTURB_KEYS-environment-variable-added