通过哈希顺序随机化在Perl 5.18+中影响哈希合并方法?

and*_*efs 8 perl hash merge

根据这个问题的答案,在Perl 5中合并两个哈希值可以通过以下方式完成:

%newHash = (%hash1, %hash2); %hash1 = %newHash;
Run Code Online (Sandbox Code Playgroud)

要么:

@hash1{keys %hash2} = values %hash2;
Run Code Online (Sandbox Code Playgroud)

另一方面,Perl 5.18将引入每进程哈希随机化.

第二种方法在Perl 5.18中使用是否仍然正确?

Per*_*one 15

通过阅读Re ^ 2阅读:哈希顺序随机化即将到来,你准备好了吗?,答案是肯定的.和以前一样,keys,valueseach将产生相同的序列通过内部的散列迭代相同的处理,如果散列不之间改变.

  • 如果有任何东西它更可能像在perl's 5.8.1和5.18之间一样工作,那么如果它检测到攻击,那么perl就会用随机种子重新散列哈希值.这会导致订单发生变化.在5.18中,种子在整个过程中保持不变 (3认同)