perlでの$|とselectの使い方

[上に] [前に] [次に]
KAN 1999/07/16(金) 10:20:48
perlでよく、

$oldfh = select(STDERR);
$| = 1;
select($oldfh);

とする定石がありますが、$|の位置はなにか意味があるのでしょうか。
また、selectをわざわざ2度使うのはどうしてでしょうか。
 理由などをお教えください。

徳明 1999/07/16(金) 12:36:35
STDERRへの出力をバッファリングしないようにするための定石ですね。
標準出力をSTDERRに切り替えて(select(STDERR))、
標準出力(STDERR)をバッファリングしないようにして($|=1)、
標準出力を元(おそらくはSTDOUT)に戻す(select($oldth))。

KAN 1999/07/17(土) 10:00:37
[[解決]]
徳明さん、回答ありがとうございました。

 つまり、
$oldfh = select(STDERR);
は、標準出力をSTDERRにかえると同時に、それまでの標準出力を
$oldfhに待避している、ということでしょうか。

 同時にできるということに気付いてませんでした。ありがと
うございました。

[上に] [前に] [次に]