我正试图弄清楚如何使一个Perl模块中的函数引用起作用。我知道如何在模块外部实现,但在模块内部呢?考虑以下代码:
==mymodule.pm==
1 sub foo { my $self = shift; ... }
2 sub bar { my $self = shift; ... }
3 sub zip {
4 my $self = shift;
5 my $ref = \&foo;
6 $self->&$foo(); # what syntax is appropriate?
7 }
==eof===
请看上面第5-6行。 (1) 定义函数引用的正确语法是什么,(2) 解除其引用的正确语法是什么?
$self
不用于确定调用哪个方法(通常在以面向对象的方式调用方法时会使用$self
)——该方法仅从$ref
确定,而$self
仅作为$ref
的第一个参数传递。与此相反,如果$ref
只是一个方法的名称,则我们将开始在$self
上查找该方法,然后沿着继承树向上查找。 - Ether