Perl 能否为单元化变量引用输出运行时错误,而不是静默退出脚本?

Can Perl output runtime errors for unitialized variable references, instead of silently exiting the script?

提问人:tim11g 提问时间:5/18/2020 更新时间:5/18/2020 访问量:64

问:

我在 Windows 5.22.1 x10 上使用 Perl v64。 我的脚本包含

use strict;
use warnings "all";

我有时会发现,由于我的错误,引用了一个未定义的变量。我的经验是Perl静默地退出脚本,而不显示任何错误或警告。

是否有任何其他设置或选项可以启用有关引用未初始化变量的警告?

我在这里找到了一些关于设置退出代码的指导,但如果可能的话,我更喜欢实际的错误或警告命名变量。

Perl 警告

评论

1赞 sticky bit 5/18/2020
编辑问题,并提供您声称获得的行为的最小可重现示例
0赞 ikegami 5/18/2020
如果 Perl 导致应用程序退出,它总是会显示一条消息。
0赞 brian d foy 5/18/2020
Perl 从不“显示”消息。它向某物发出信息,也许某物显示它。因此,在这些情况下,诀窍有时是弄清楚看到了什么输出以及该东西正在用它做什么。向我们展示您是如何运行程序的,等等。

答:

1赞 ikegami 5/18/2020 #1

Perl 解释器有三种方式会导致程序退出:

  • 通过抛出异常。如果未捕获此异常,则异常的字符串化将打印到 STDERR,程序将退出。
  • 通过遇到严重的情况。一条消息(可能包括“panic”一词)将打印到 STDERR,程序将退出。
  • 响应对程序的呼叫或到达程序的末尾。Perl 解释器不会输出任何消息,因为它没有启动退出(因此无法知道编程退出的原因)。exit

如果程序作系统杀死(例如,响应一些未捕获的信号),程序也会退出。

因此,在Perl解释器启动退出的所有情况下,它已经输出了一条消息。

所以,你要求Perl做Perl已经做过的事情。

所以,你的要求是没有意义的。

评论

0赞 brian d foy 5/18/2020
既然你不再说“显示”,我的评论现在无关紧要:)