我已经多次看到以下一段代码将哈希加入另一个哈希
%hash1 = ('one' => "uno"); %hash2 = ('two' => "dos",'three' => "tres"); @hash1{keys %hash2} = values %hash2;
我认为每次调用“values”或“keys”函数时,它们的输出顺序都是随机的.如果这是真的,那么上面的语句如何以正确的顺序获取双方的键和值?
换句话说,为什么没有机会得到’two’=>合并两个哈希后,%hash1中的’tres’?
Perl是否足够聪明,知道如果在同一行上调用“keys”和“values”,那么键和值必须以相同的顺序给出?
解决方法
见
perldoc -f keys
So long as a given hash is unmodified you may rely on keys,values and each to repeatedly return the same order as each other.