【发布时间】:2017-11-01 01:04:36
【问题描述】:
在 Perl 5 中,我可以检查标准输入是否打开并从中读取一行。
for (;;) {
last if eof(STDIN);
print "Got line " . readline(STDIN);
}
当我运行它并输入一行输入时,它会读取该行并在继续之前完成它的工作。程序不关心是否有长时间的停顿:
$ perl print-stdin.pl
this
Got line this
is
Got line is
a
Got line a
line
Got line line
如果我在 Perl 6 (Rakudo 2017.07) 中做同样的事情,程序会立即停止:
use v6;
loop {
last if $*IN.eof;
put "Got line " ~ $*IN.get;
}
我真的很喜欢Supply,它可以在它到达时给我一行输入(可能来自一个缓慢输出行且有长时间停顿的程序),但我一直支持这个简单的问题。我没有找到执行此操作的内置方法(这对于如此常见的任务来说有点令人惊讶)。
【问题讨论】:
标签: raku filehandle