什么是打破子程序的最佳方法&继续处理脚本的其余部分?
即
#!/usr/bin/perl
use strict;
use warnings;
&mySub;
print "we executed the sub partway through & continued w/ the rest
of the script...yipee!\n";
sub mySub{
print "entered sub\n";
#### Options
#exit; # will kill the script...we don't want to use exit
#next; # perldoc says not to use this to breakout of a sub
#last; # perldoc says not to use this to breakout of a sub
#any other options????
print "we should NOT see this\n";
}
答案 0 :(得分:5)
以陈述明显回归子程序的最佳方式为代价......
return
除非问题中有一些隐藏的微妙内容,否则不明确
编辑 - 也许我看到了你的目标
如果你写一个循环,那么退出循环的有效方法是使用last
use strict ;
use warnings ;
while (<>) {
last if /getout/ ;
do_something() ;
}
如果你重构这个,你最终可能会使用last来退出子程序。
use strict ;
use warnings ;
while (<>) {
process_line() ;
do_something() ;
}
sub process_line {
last if /getout/ ;
print "continuing \n" ;
}
这意味着您正在使用last
,您应该使用return
,如果您有游荡,则会收到错误:
Exiting subroutine via last at ..... some file ...
答案 1 :(得分:0)
如果有人可能想要捕获发生的任何错误,请不要使用exit来中止子例程。使用die代替,可以被eval捕获。