我在Perl中运行一个程序,它在一个点上评估从子程序中调用的if语句中的数据,例如
sub check_good { if (!good) { # exit this subroutine # restart program } else { # keep going } } # end sub
我遇到的问题是退出并重新启动.我知道我可以使用0号出口;直接退出,但显然这是不正确的,如果我想回到开头.我尝试调用基本上启动程序的子程序,但是当它运行时它将再次回到这一点.
我想把它放在while循环中,但这意味着将整个文件放在循环中,这将是非常不切实际的.
我实际上并不知道这是否可行,所以任何输入都会很棒.
解决方法
如果您没有更改@ARGV,或者保留了它的副本,则可能会执行类似
exec($^X,$0,@ARGV)
的操作.
$^X
and $0
(或$EXECUTABLE_NAME和$PROGRAM_NAME,请参阅下面的Brian的评论)分别是当前的perl解释器和当前的perl脚本.