- ベストアンサー
コンソール出力をテキストに出力する方法(コンソール出力は残しつつ)
【質問】 Perl内部で実行される実行ファイル(.exe)のコンソール出力(STDOUT,STDERR)をテキストファイルに出力したい。(Perlのコンソール出力も含む。) ※コンソール出力は残しつつ。 (コマンドプロンプトの)パイプとリダイレクトを使用して上手くいくかと思ったのですが、標準出力と標準エラーとでは標準エラーが先に出力されてしまい、本来出力される順番で出力されない。(標準出力はバッファにたまるため??) 何かいい方法はありませんでしょうか? 【環境】 Windows2000 Active Perl 5.8.8
- みんなの回答 (3)
- 専門家の回答
お礼
回答ありがとうございます。 ただ、勉強不足のため間違っていたら申し訳ないのですが、Teeモジュールを使用することで、二つ以上のハンドルに同時出力しているのだと思います。しかし、これではPerl内部で実行される実行ファイルのコンソール出力までは出力先を変更できないのではないでしょうか? 説明がわかりにくかったかと思いますので、例を記述します。以下のprint文とsystem()で出力される標準出力と標準エラーをテキストファイルに取得したいのです。(コンソール出力は残したままで) ※下の例ではエラーは発生しませんが。。 (例) $cmd = "dir"; # 実行ファイルの代わり。 print"カレントディレクトリ内のファイルを表示 開始\n"; system($cmd); # 実際には.exeファイル print"カレントディレクトリ内のファイルを表示 終了\n"; 説明不足で申し訳ございませんでした。どなたかご教授いただけると助かります。
補足
調べてみたのですが、File::TeeモジュールはWindowsでは使用できないみたいですね。 別の方法を検討してみます。 ありがとうございました。