はバックそのオウムの日中のPerl 6のための回答のカップルがあり、彼らは、現在動作していないようです:どのようにしてPerl 6ファイルハンドラを自動フラッシュできますか?
これは実装MoarVMバージョン2017.04から53-g66c6dda 上に構築されたRakudoバージョン2017年4月3日ですPerl 6.c.
Does perl6 enable “autoflush” by default?への回答は、デフォルトで有効になっているとしています(ただし、2011年でした)。
$*ERR.say: "1. This is an error";
$*OUT.say: "2. This is standard out";
そして不幸な順序で、その出力、::だから多分私はそれをオンにする必要が
2. This is standard out
1. This is an error
は、ここで私は一緒に遊んでいたプログラムです。
$*ERR.autoflush = True;
$*ERR.say: "1. This is an error";
$*OUT.say: "2. This is standard out";
しかし、それは動作しません:autoflush
方法に言及しHow could I disable autoflush?はありません
タイプのインボカントのためのそのような方法で '自動フラッシュ' 'IOは::ハンドル'
は、私は、すべての出力後にフラッシュするIOクラスを作成することで、自分自身を偽造することができたと思います。それが価値があるのは、この機能がないために、今日の特定のタスクにPerl 6を使用できなくなったことです。
2番目の質問として、なぜPerl 6はこれを持っていないのですか?あなたはPerl 5の人をどのように説得しますか?これは問題ではありませんか?
FWIW TTYハンドルはバッファされず、これを設定する必要はありません。 OPの観察された振る舞いは、まだlibuvの非同期入出力を使って2017.04が出力されているためです。 –
'$ * ERR.out-buffer'と' $ * OUT.out-buffer'を 'False'に設定すると、あなたの出力がリダイレクトされたりパイプされたりしているときにも便利です(例えば' 2>&1 | less')。 – mscha