당신은 \&subname
구문을 사용하여 서브 루틴 참조 걸릴 수 있습니다 다음, 당신은 쉽게 스칼라 같은 인수로 다른 서브 루틴에 전달할 수 있습니다. 이 내용은 perlsub
및 perlref
에 설명되어 있습니다. 나중에 Arrow operator(->)
을 사용하여 역 참조 할 수 있습니다.
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;
}
또는 이름을 지정하지 않고 익명 서브 루틴을 만들 수 있습니다. 흥미로운 경우로 이어질 수 있습니다. closures
my $question = sub {
print "question the term";
return 1;
};
answer($question);
# you can call it using arrow operator later.
$question ->();
'return' 후에 괄호가 필요하지 않습니다. 더욱 중요한 점은'return; (아무 것도 지정하지 않으면) 실제로'undef'가 리턴된다는 것입니다. 모든 것이 잘되었음을 나타 내기를 원한다면 - 항상 좋은 생각인데 - 일반적으로'return 1;'을합니다. – zdim
스칼라 컨텍스트에서만 @zdim – ysth
@ysth 예, 좋은 지적입니다, 감사합니다. 리스트 컨텍스트에서는이 점에서 다른 게임입니다. – zdim