我想弄清楚如何使一个Perl模块的函数参考工作。我知道如何在模块之外做到这一点,但是在一个模块之内?考虑这样的代码:如何在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'是不用于确定调用哪种方法(通常情况下调用OO风格的方法时) - 该方法完全由'$ ref'确定,'$ self'仅作为$ ref的第一个参数传递。如果'$ ref'只是方法的名称,在这种情况下,我们将开始在'$ self'上查找该方法,然后继承树。 – Ether 2010-02-04 17:58:07
Upvoted成为Randal“one-L”Schwartz!好极了! – 2010-02-04 18:14:17
@Jonathan:让我们不要把SO [perl]变成一群流涎的团体.. Jon Skeet球迷已经够糟糕了。 :/ – Ether 2010-02-04 18:17:29