有什麼方法可以清除Perl中的STDIN緩衝區?我的程序的一部分有很長的輸出(有足夠的時間讓某人輸入幾個字符),然後在輸出之後要求輸入,但是如果在輸出過程中輸入了字符,它們就會被「粘貼」到任何在輸入處輸入的內容部分。這裏是我的問題的一個例子:Flushing Perl STDIN緩衝區
for(my $n = 0; $n < 70000; $n++){
print $n . "\n";
}
chomp(my $input = <STDIN>);
print $input . "\n";
輸出將包括在該for循環的輸出期間輸入的任何字符。我怎麼能禁用STDIN或刷新STDIN緩衝區(或者在調用它之前不允許額外的字符被插入到STDIN中)?
好吧,我一直在尋找的答案,這個問題的3天,現在每隔一小時(不,但我會說至少每天3或4小時)並且還沒有找到答案,實際上我問了我的同事,他們也知道並使用Perl,他們也不知道,所以我確實相信我已經投入了比你更多的努力,暗示我已經投入了,除此之外,你對於如何去做我所要求的有什麼想法嗎?因爲我大約3天前已經瀏覽了你的鏈接,試圖以一種能夠在邏輯上解決這個問題的方式來實現這些功能,並且它不起作用。 – mcwillig
'使用IO :: Handle; STDIN-> autoflush(1);' – 2011-09-29 20:48:32
謝謝你的回答,但是,這並沒有解決問題,另外,我記得閱讀autoflush和刷新只適用於輸出,例如作爲STDERR和STDOUT,而不是輸入。當我嘗試了你所建議的內容時,我仍然可以看到我在輸入for循環期間輸入的字符以及我在STDIN中輸入的內容。 – mcwillig