我正在Perl中运行一个程序,该程序有一次评估从子例程中调用的if语句中的数据,例如
sub check_good {
if (!good) {
# exit this subroutine
# restart program
}
else {
# keep going
}
} # end sub
我遇到的问题是退出并重新启动。我知道我可以直接使用
exit 0;
直接退出,但是如果我想回到开头,显然这是不正确的。我尝试调用本质上启动程序的子例程,但是当然,一旦它运行,它将再次回到这一点。我曾考虑过将其放入while循环中,但这意味着将整个文件放入循环中,这是非常不切实际的。
我实际上不知道这是否可行,因此任何输入都会很棒。
最佳答案
如果您尚未更改@ARGV
或保留了副本,则可以执行 exec($^X, $0, @ARGV)
之类的操作。
$^X
and $0
(或$EXECUTABLE_NAME
和$PROGRAM_NAME
,请参见下面的Brian注释)分别是当前的perl解释器和当前的perl脚本。
关于perl - 在Perl中,是否有一种方法可以从自身内部重新启动当前正在运行的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606646/