運行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