Perlコードからスクリプトを呼び出し、そのSTDERRとSTDOUTを組み合わせてキャプチャしたいと思います。
私は通常fromを使用capture
しますIPC::System::Simple
が、tiはSTDERRのキャプチャを許可していないようです。
STDERR(ファイル記述子2)をSTDOUT(ファイル記述子1)にリダイレクトできます2>&1
。
オペレーターのperlopからqx//
:
バックティックは標準エラーに影響を与えないため、これに対処する場合は、シェルファイル記述子構文を使用してください(シェルがこれをサポートしていると想定)。コマンドのSTDERRとSTDOUTを一緒にキャプチャするには:
$ output = `cmd 2>&1`;
POSIXシステムでは、次のことができます。Windowsでは、これはcygwinで機能します。
my @lines = capture("some command 2>&1");
ただし、STDERR行とSTDOUT行を区別する場合は、IPC::Open3または誤った名前のIPC::Open3::Utilを使用する必要があります。