デフォルトでは、STDOUT は、端末に接続されている場合はライン バッファー (LF によってフラッシュ) され、端末以外に接続されている場合はブロック バッファー (バッファーがいっぱいになるとフラッシュ) されます。さらに、<STDIN>
端末に接続されている場合は STDOUT をフラッシュします。
これの意味は
- STDOUT は端末に接続されていません。
- STDOUTに出力していない、または
- STDOUT が台無しになっています。
print
select
ハンドルが提供されていない場合は、現在編集されているハンドルに出力されるため、上記のどれが当てはまるかに関係なく、次のように動作します。
# Execute after the print.
# Flush the currently selected handle.
# Needs "use IO::Handle;" in older versions of Perl.
select()->flush();
また
# Execute anytime before the <STDIN>.
# Causes the currently selected handle to be flushed immediately and after every print.
$| = 1;