2016-11-28 6 views
1

にメッセージを死にます。リダイレクトは、私は以下のようにファイルを開いていたファイル

どうすればいいですか?致命的な 例外がスローされようとしているときに

+0

それが重複としてマークされているのはなぜ?私はそれを2回投稿しましたか? –

+1

私はこれが指定された回答の質問と重複しているとは思わない。 OPはメッセージを 'die()'からファイルにリダイレクトする方法を知りたいのですが、ファイルに書き込む方法ではありません。 – stevieb

+0

最も単純な方法は、プログラムのSTDERRをリダイレクトすることです。例えば'script.pl 2> log'他のオプションには、プログラム全体を' eval {} 'で実行する方法や、' $ SIG {__ DIE __} 'にフックする方法があります。これらのどちらもあなたの要求に一致する警告をキャッチしませんが、あなたが実際に望むものはそうではありません。 – ikegami

答えて

4

perlvar

から$SIG{__DIE__}で示されるルーチンが呼び出されます。エラーメッセージは、最初の引数 として渡されます。

あなたは以下のようにそれを使用することができます:

local $SIG{__DIE__} = sub { 
    my ($die_message) = @_; 
    open (my $log, ">>", '/tmp/die.log'); 
    print $log $die_message; 
}; 
関連する問題