运行perl 5.12.4 在返回语句内或之前分配哈希时,函数的结果之间会产生不一致。最简单的例子是:Perl子程序返回中的哈希赋值变得奇怪
perl -e 'sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %[email protected];
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 %[email protected];
return %[email protected]
}
print "@{[ s1()]}\n"'
c 2 c 2 a c
为什么(重新)分配给返回语句(第二个例子)中的散列会破坏返回的散列?
证实。这确实很奇怪。但是当我在v14.2或v16.3上运行代码时,它的运行没有问题→它似乎已经修复,尽管我在perldeltas中看不到任何相关修复。 – amon 2013-05-07 05:24:41
在perl 5.16.2上运行你的第二个例子,我得到了'b 1 c 2 a 4'' – friedo 2013-05-07 05:26:24
这有点奇怪。我**可以**在我的一台机器上复制这个:'这是为darwin-thread-multi-2level构建的perl 5,版本12,subversion 4(v5.12.4)' – chrsblck 2013-05-07 06:24:02