Perl 如何将一个子例程作为参数传递给另一个子例程
我想将一个子例程作为参数传递给另一个子例程 子例程Perl 如何将一个子例程作为参数传递给另一个子例程,perl,subroutine,Perl,Subroutine,我想将一个子例程作为参数传递给另一个子例程 子例程问题应作为参数传递给子例程答案?我如何使用Perl实现它 question(); sub question { print "question the term"; return(); } sub answer() { print "subroutine question is used as parameters"; return(); } 您可以使用\&subname语法获取子例程引用,然后可以轻松地将其
问题
应作为参数传递给子例程答案
?我如何使用Perl实现它
question();
sub question {
print "question the term";
return();
}
sub answer() {
print "subroutine question is used as parameters";
return();
}
您可以使用
\&subname
语法获取子例程引用,然后可以轻松地将其作为标量之类的参数传递给其他子例程。这记录在和中。稍后,您可以使用取消引用
也可以通过不命名来创建匿名子例程。这可能会导致一个有趣的案例
如果我有另一个名为question1的子例程(现在我想在子例程中传递question和question1子例程,回答如何传递它),参考类似question1的问题,即
my$question1\u subref=\&question1
并将其传递给subanswer
“它可能导致有趣的闭包案例”,这与上下文无关。这里没有闭包。在return
之后不需要括号。更重要的是,注意返回
(没有任何内容)实际上返回undef
。如果你想表明一切进展顺利——这总是一个很好的主意——你通常会返回1代码>@zdim仅在标量中context@ysth是的,说得好,谢谢。在列表上下文中,从这个意义上讲,这是一个不同的游戏。同时删除“子答案”后面的paren。
sub question {
print "question the term";
return 1;
}
my $question_subref = \&question;
answer($question_subref);
sub answer {
my $question_subref = shift;
print "subroutine question is used as parameters";
# call it using arrow operator if needed
$question_subref -> ();
return 1;
}
my $question = sub {
print "question the term";
return 1;
};
answer($question);
# you can call it using arrow operator later.
$question -> ();