• ベストアンサー

warnやdieの出力先を変更したい

お世話になります。 現在perlを勉強しているのですが(ActivePeal5.12.2) コマンドプロンプトから test.pl > test.log と実行した場合、test.pl内で標準出力した文字列がtest.logにリダイレクトされますが test.pl内で ~die "ERROR~"とした場合、"ERROR~"はtest.logに出力されません。 これを簡単にtest.logに出力する方法はないでしょうか。 リダイレクトせず実行した場合、画面に出力されているのでリダイレクトすればそのまま良いと思っていたのですが・・

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/583)
回答No.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; これでエラー出力を標準出力に振りかえることができます。

kingyo1022
質問者

お礼

ありがとうございます。 perlでとばかり考えていて、そちらの方に全然頭が回っていませんでした。 openはそのような使い方もできるのです。

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

perl test.pl 2>err.log のようにすれば標準エラー出力のリダイレクトが可能です。

kingyo1022
質問者

お礼

ありがとうございます。 perlでとばかり考えていて、そちらの方に全然頭が回っていませんでした。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

die とか warn は標準エラーに出ているはずなので, そっちもリダイレクトすれば一応取れるはず.

kingyo1022
質問者

お礼

ありがとうございます。 perlでとばかり考えていて、そちらの方に全然頭が回っていませんでした。

関連するQ&A