执行语句$obj->method();
时,perldiag
表示 Perl 需要知道该方法属于哪个包。这就是为什么它需要被祝福:
无法在 unblessed 引用上调用方法“%s”
(F) 方法调用必须知道它应该在哪个包中运行。它通常从您提供的对象引用中发现这一点,但在这种情况下您没有提供对象引用。在得到祝福之前,引用不是对象引用。见
perlobj
。
因此,无法执行以下操作:
my $data = [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
];
$data->process( @params ); # Can't call method "process" on unblessed reference
那为什么它可以与 coderef 一起使用?:
my $process = \&process; # Same method as before
$data->$process( @params ); # Works fine now