我如何阅读Rakudo Perl6中的STDIN?

时间:2012-12-15 15:15:34

标签: io stdin perl6 rakudo

就这么简单,如何在Perl6中读取STDIN的输入?

我认为有很多方法可以做到这一点,但我对最惯用的Perl6解决方案很感兴趣。

2 个答案:

答案 0 :(得分:7)

Perl6中的标准输入文件描述符是$*IN(在Perl5中,*STDIN typeglob对STDIN文件描述符的引用为*STDIN{IO})。

从标准输入读取的一种方法如下:

for lines() {
    say "Read: ", $_
}

事实上,没有调用对象的lines()默认为$*IN.lines()

使用局部变量的替代方法是:

for $*IN.lines() -> $line {
    say "Read: ", $line
}

看到更多的替代方法会很酷。

答案 1 :(得分:6)

您也可以使用不带参数的slurp来覆盖整个标准输入。此代码将覆盖整个输入并打印出来。

print slurp;

如果你想获得行,你可以使用lines()迭代器,就像Perl 5中的<>一样工作。请注意,与Perl 5不同,它会自动选择行。

for lines() {
    say $_;
}

如果您想获得单行,而不是使用lines()迭代器,则可以使用get

say get();

如果您需要询问用户某事,请使用prompt()

my $name = prompt "Who are you? ";
say "Hi, $name.";