perl赋值给子程序返回的哈希变得很奇怪

时间:2013-05-07 04:15:20

标签: perl hash return variable-assignment subroutine

运行perl 5.12.4 在返回语句中或之前分配散列时,函数的结果之间会出现差异。最简单的例子是:

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

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

1 个答案:

答案 0 :(得分:2)

因为一个错误。它似乎已在5.14.0中修复。 (见5.12.4。在5.14.0中不存在)

最小测试用例:

perl -E"say %h = qw/b 1 c 2 a 3 a 4/"