PerlでSTDINバッファをクリアする方法はありますか?私のプログラムの一部は長時間の出力(誰かが少数の文字を入力するのに十分な時間)を持っており、その出力の後に入力を求めますが、出力中に文字が入力された場合、入力に入力されたもの部。ここに私の問題の例があります:Perl STDINバッファをフラッシュする
for(my $n = 0; $n < 70000; $n++){
print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
出力には、そのforループの出力中に入力された文字が含まれます。どのようにしてSTDINを無効にするか、STDINバッファをフラッシュするか(またはそれを呼び出す前に余分な文字をSTDINに挿入しないようにする方法)?あなたはTerm::ReadKey
モジュールでこれを達成することができますように見えます
[OK]を、私はすべての時間(今3日間この質問への答えのためではありません探していますしかし、私は少なくとも3〜4時間/日と言います)、まだ答えを見つけていませんでした。実際に私はPerlを知っている人と知っている同僚に尋ねました。彼らはどちらも知らないので、私は信じています私が入れていることを暗示している以上に努力しました。それ以外にも、私が求めていることをどうやってやるのか考えていますか?私はすでに3日ほど前にあなたのリンクを見ていたので、この問題を論理的に修正する方法でこれらの機能を実装しようとしましたが、うまく機能しませんでした。 – mcwillig
'IO :: Handle; STDIN-> autoflush(1);' –
あなたの答えをありがとう、しかし、これは問題を解決していない、また、私はautoflushを読むことを覚えているとフラッシュ出力だけのために良いですSTDERRとSTDOUTは入力されません。あなたが提案したものを試してみましたが、私はまだforループの出力中に入力した文字にSTDINで入力したものを加えました。 – mcwillig