运行 perl 5.12.4
在 return 语句中或事先分配哈希时,函数结果之间出现差异。最简单的例子是:
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %h=@a;
return %h
}
print "@{[ s1()]}\n"'
c 2 a 4 b 1
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %h=@a;
return %h=@a
}
print "@{[ s1()]}\n"'
c 2 c 2 a c
为什么在 return 语句(第二个示例)中(重新)分配给散列会破坏返回的散列?
最佳答案
因为一个bug。它似乎已在 5.14.0 中修复。 (存在于 5.12.4。不存在于 5.14.0)
最小测试用例:
perl -E"say %h = qw/b 1 c 2 a 3 a 4/"
关于子程序返回中对哈希的 perl 赋值变得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16411109/