$ perl -MO=Deparse -e 'this{$t}'
this {
$t
} ;
$ perl -we 'sub this{42} ; this{$t}'
Name "main::t" used only once: possible typo at -e line 1.
Odd number of elements in anonymous hash at -e line 1.
Use of uninitialized value $t in anonymous hash ({}) at -e line 1.
$ perl -we 'sub this{42} ; this{42,43}'
# No output
Perl анализирует {$t}
как анонимную ссылку ha sh и ожидает, что this
будет подпрограммой, которая может принять ссылку в качестве аргумента. После того, как Perl не удается найти подпрограмму с именем this
, он пытается выяснить, можно ли разобрать конструкцию как косвенный синтаксис объекта. А именно, он идентифицирует тип объекта {$t}
и ищет метод this
в пространстве имен этого типа объекта. Это последний метод разрешения, который пытается использовать синтаксический анализатор, поэтому при сбое вы получаете сообщение об ошибке из этого раздела синтаксического анализатора.