dポイントプレゼントキャンペーン実施中!

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

A 回答 (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;
これでエラー出力を標準出力に振りかえることができます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/21 12:50

perl test.pl 2>err.log


のようにすれば標準エラー出力のリダイレクトが可能です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/21 12:48

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/21 12:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!