有什么方法可以清除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