perl - 在Perl中,是否有一种方法可以从自身内部重新启动当前正在运行的程序?

标签 perl exit subroutine

我正在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/

相关文章:

function - Fortran return 语句是否已过时?

regex - 如何通过 sed/perl 删除行同时保留某些字符?

perl - 使用 Perl 按特定字母顺序对字符串进行排序

perl:一个 parent ,许多 child - parent 中的单管道阅读器?

lua - 您如何干净地退出交互式Lua?

perl - 如何使用 'subroutine reference' 作为哈希键

perl - 当使用 Perl 的 File::Find 时,限制搜索深度的快速简便方法是什么?

Python 3.4 : PyQt on Windows: Crash on exit only on some computers

node.js - 在 Node 进程退出时发送http请求

debugging - Fortran 是否通过子程序多次调用修改输入参数?