私は Windows で perl アプリケーションを作成しています。ここでは、呼び出し元の perl スクリプトを使用しており、いくつかの階層的な perl oo モジュールがあります。perl が die を処理する方法をカスタマイズしたいと思います。$SIG{ DIE } を使用して「use 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 はハンドラーによって処理されません。