2010-03-04 62 views

回答

18

先放CODEREF说法:

sub function (&$) { 
    my $code = shift; 
    my $param1 = shift; 
    # do something with $param1 and $code 
} 

function { print "i'm inside the coderef\n" } "whatever"; 

见perlsub手册页,其中部分内容如下:

一个“&”需要一个匿名的子程序,其中,如果传递的第一个参数, 不需要“sub”关键字或后续逗号。
+0

它是第一个参数时为什么不起作用? – Geo 2010-03-04 18:59:22

+5

@Geo,它可以工作,但你需要更明确:'function(“whatever”,sub {print“我在coderef \ n”});'name BLOCK EXPR'语法只适用于if coderef首先出现。 – friedo 2010-03-04 19:03:03

+4

仅仅因为它是这样设计的。我怀疑让它摆在首位的主要原因是让用户编写子程序,这些子程序可以像内置函数一样调用,只需要一小段代码(如map和grep),但任何更灵活的东西都可能会快速混淆。 – Sean 2010-03-04 19:04:10

-3

这里, $ &是一个Perl的特殊变量,用于匹配确切的模式。 (你在上下文中错误地使用了它) $`用于匹配给定模式之前的字符串。 $'用于匹配给定模式后的字符串。

+1

在OP使用它的上下文中,它是一个函数原型。请参阅http://perldoc.perl.org/perlsub.html#Prototypes – friedo 2010-03-05 06:00:54

相关问题