7

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

为什么在返回语句(第二个示例)中(重新)分配给哈希会破坏返回的哈希?

4

1 回答 1

2

因为一个bug。它似乎已在 5.14.0 中修复。(存在于 5.12.4 中。不存在于 5.14.0 中)

最小测试用例:

perl -E"say %h = qw/b 1 c 2 a 3 a 4/"
于 2013-05-07T10:33:48.430 回答