Назначение списка в скалярном контексте

Назначение списка в скалярном контексте возвращает количество элементов в правой части:

scalar(my ($hello, $there, $world) = (7,8)); #evaluates to 2

Почему оно оценивает правую часть и дает 2 , вместо оценки вновь определенного списка и возврата 3?

Мне кажется, что $ hello получает 7, $ there получает 8, а $ world получает undef , затем этот список оценивается в скалярном контексте, что приведет к 3, так как это количество элементов в списке ( $ hello $ there $ world ). Мне кажется странным, что контекст влияет на то, какая часть вычисляемого выражения возвращается:

my $greeting = (($hello, $there, $world) = (7,8)); #2

my @greeting = (($hello, $there, $world) = (7,8));
my $greeting_length = @greeting; #3
12
задан Brian Tompsett - 汤莱恩 6 June 2015 в 14:25
поделиться