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

return ステートメント (2 番目の例) でハッシュに (再) 割り当てを行うと、返されたハッシュが破損するのはなぜですか?

4

1 に答える 1