在Perl中覆盖die并仍在Windows上返回正确的退出代码

时间:2015-06-25 14:31:04

标签: perl

在Windows上,我想只在脚本死亡时执行某些操作。 下面的块没有帮助;我认为这是因为Windows不支持信号。

$SIG{__DIE__} = sub {
    qx(taskkill /F /IM telnet.exe);
    CORE::die @_;
}

然后我尝试了这个:

END {
    qx(taskkill /F /IM telnet.exe);
    exit $exit_code;
}

它执行了taskkill,但退出了退出代码0.我需要传播exit_code,因为我们会根据它进行进一步处理。

1 个答案:

答案 0 :(得分:8)

END块可以设置$?来控制退出值。

END {
      qx(taskkill /F /IM telnet.exe);
      $? = $exit_code;
}