如何在引用undef值时让Perl停止?

Nei*_*eil 15 perl warnings undef

当你引用一个undef值而不仅仅是警告时,你如何让Perl停下来并给出一个堆栈跟踪?这似乎use strict;不足以达到这个目的.

cjm*_*cjm 20

use warnings FATAL => 'uninitialized';

use Carp ();
$SIG{__DIE__} = \&Carp::confess;
Run Code Online (Sandbox Code Playgroud)

第一行使警告致命.当程序死亡时,接下来的两个会导致堆栈跟踪.


Ari*_*zis 15

而不是%SIG其他人提出的凌乱摆弄,只是和完成.use Carp::Always

请注意,只需运行它就可以将模块注入脚本而无需修改源代码perl -MCarp::Always; 此外,您可以将PERL5OPT环境变量设置为-MCarp::Always加载它,甚至不更改脚本的调用.(见perldoc perlrun.)