Назначение списка в скалярном контексте возвращает количество элементов в правой части:
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