如何在 Unix 上的 (Perl) 脚本遇到错误时停止退出?

如何在 Unix 上的 (Perl) 脚本遇到错误时停止退出?

我有一个从同事那里继承的 Perl 脚本,它为我处理一些数据。在我们的旧服务器上,它将运行并返回几个预期的错误消息,然后为我生成输出文件。它可以很好地满足我的需要。然而,我最近将其从旧服务器移至新的、更大的组服务器,没有进行任何其他编辑 - 现在它似乎在第一个错误后退出,而不是继续运行。不再出现错误,也不会生成输出文件。

尽管出现错误,如何使该脚本始终运行?我想尝试在服务器/Unix 级别而不是 Perl 代码本身解决这个问题,因为该脚本已经在我们的其他服务器上运行良好。

额外细节:

在我们的旧服务器上,我使用 Perl 5.26.1 – 在未安装的新服务器上,但我在 Perl 5.16、5.22.1 和 5.28.0 上遇到了同样的错误,所以我不认为这是 Perl 版本问题。

我尝试过使用“set +e”,但这没有帮助。

退出状态返回为 255,即退出状态超出范围。我不知道它在旧服务器上给出的退出状态是什么,因为我目前无法访问它。

新服务器使用 univa 网格引擎对作业进行排队,但我尝试在登录节点上运行脚本并遇到相同的问题,因此我认为这不是 UGE 特定的问题。

答案1

您可以使用以下命令逐行调试 perl 脚本:

perl -d script.pl

它会像下面这样提示你

DB<1> 

只需继续输入“n”,直到到达脚本末尾。您可以查看脚本在何处引发错误并据此对脚本进行故障排除。

相关内容