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