$variable->method(@args)
просто вызывает
method($variable, @args)
Но в каком пакете Perl должен найти подпрограмму method
? Если $variable
является благословенной ссылкой, Perl будет искать подпрограмму в пакете, возвращаемом ref $variable
. Если $variable
является строкой и именем пакета, Perl будет искать подпрограмму в этом имени пакета.
Во втором примере, когда вы объявляете
$process = \&process
вы дали Perl ссылку на код, который хотите вызвать, поэтому Perl знает, как принять вызов
$variable->$process(@args)
и вызвать
$process->($variable, @args)
или
&process($variable, @args)
Только когда $variable
является ссылкой unblessed , а имя метода не может быть преобразовано в ссылку на код, Perl не может понять, что делать, и вводит команды