这是代码:
sub function($&) {
my $param1 = shift;
my $code = shift;
# do something with $param1 and $code
}
如果我试着这样称呼它:
function("whatever") {
print "i'm inside the coderef\n";
}
我得到Not enough arguments for MyPackage::function at x.pl line 5, near ""whatever" { "
。如何在不必在代码块前添加sub
的情况下调用它?
答案 0 :(得分: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”关键字或后续逗号。
答案 1 :(得分:-3)
下面, $&安培;是一个Perl的特殊变量,用于匹配精确的模式。 (你在你的上下文中错误地使用它) $`用于匹配给定模式之前的字符串。 $'用于匹配给定模式后的字符串。