我正在 Windows 中编写一个 perl 应用程序,我正在使用一个调用 perl 脚本,并且有几个分层的 perl oo 模块。我想自定义 perl 处理死亡的方式。我知道使用 $SIG{ DIE } 并使用“使用 subs die”,但我可以只将它放入我的调用脚本并期望现在,如果我的应用程序中的任何模块将只通过这个处理程序?
我已经尝试过这样的事情但没有奏效:
$SIG{__DIE__} = \&_death_handler;
use Mypackage;
my $obj = Mypackage->new();
$obj->init;
sub _die_handler {
print "I die handler\n";
}
Mypackage 看起来像这样:
package Mypackage;
sub new {
.....
.....
}
sub init {
my $self = shift;
die "error\n";
}
这似乎只在我从调用脚本调用 die 时才有效,但从 Mypackage 调用的 die 没有被处理程序处理。