スカラー コンテキストでのリスト代入は、右側の要素の数を返します。
scalar(my ($hello, $there, $world) = (7,8)); #evaluates to 2
新しく定義されたリストが評価されて 3 を返すのではなく、右辺を評価して 2 を生成するのはなぜですか?
私には、$hello
gets 7、$there
gets 8、および$world
getsundef
のように見えます。その後、そのリストはスカラー コンテキストで評価され、結果は 3 になります。これは、リスト ( $hello $there $world
) 内の要素の数であるためです。コンテキストが評価された式のどの部分が返されるかに影響するのは私には奇妙に思えます:
my $greeting = (($hello, $there, $world) = (7,8)); #2
my @greeting = (($hello, $there, $world) = (7,8));
my $greeting_length = @greeting; #3