- ベストアンサー
warnやdieの出力先を変更したい
お世話になります。 現在perlを勉強しているのですが(ActivePeal5.12.2) コマンドプロンプトから test.pl > test.log と実行した場合、test.pl内で標準出力した文字列がtest.logにリダイレクトされますが test.pl内で ~die "ERROR~"とした場合、"ERROR~"はtest.logに出力されません。 これを簡単にtest.logに出力する方法はないでしょうか。 リダイレクトせず実行した場合、画面に出力されているのでリダイレクトすればそのまま良いと思っていたのですが・・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
実行環境はWindowsでしょうか? dieで出力されるのは「標準エラー出力」といいます。 perl test.pl >test.log 2>error.log とすればエラー出力をファイルへ取得できます。 これをtest.logへ一緒にするには perl test.pl >test.log 2>&1 とします。 また、perl側で処理したい場合は、スクリプトの初めの方に次の行を追加して下さい。 open(STDERR, ">&STDOUT"); $| = 1; これでエラー出力を標準出力に振りかえることができます。
お礼
ありがとうございます。 perlでとばかり考えていて、そちらの方に全然頭が回っていませんでした。 openはそのような使い方もできるのです。