16.7 プログラムのSTDERRを読み取る

  • コマンドのSTDOUTとSTDERRをまとめて変数に代入する。
$output = `cmd 2>&1`;   # バッククォートの場合
# または、
$pid = open(PH, "cmd 2>&1 |");   # パイプ付きのopenの場合
while (<PH>) {  }   # さらに読み取りを行う
  • コマンドのSTDOUTを変数に代入し、STDERRを破棄する。
$output = `cmd 2>/dev/null`;
# または、
$pid = open(PH, "cmd 2>/dev/null |"); 
while (<PH>) { }
  • コマンドのSTDERRを変数に代入し、STDOUTを破棄する。
$output = `cmd 2>&1 1>/dev/null`;
# または、
$pid = open(PH, "cmd 2>&1 1>/dev/null |");
while (<PH>) { }
  • コマンドのSTDOUTとSTDERRを入れ替える場合。つまり、STDERRを変数に代入し、STDOUTを元のSTDERRの代わりに出力する。
$output = `cmd 3>&1 1>&2 2>&3 3>&-`;
# または、
$pid = open(PH, "cmd 3>&1 1>&2 2>&3 3>&-|");
while (<PH>) { }