Io 我如何阅读Rakudo Perl6中的STDIN?
就这么简单,如何在Perl6中读取来自STDIN的输入?Io 我如何阅读Rakudo Perl6中的STDIN?,io,stdin,raku,rakudo,Io,Stdin,Raku,Rakudo,就这么简单,如何在Perl6中读取来自STDIN的输入? 我认为有很多方法可以做到这一点,但我对最惯用的Perl6解决方案感兴趣。Perl6中的标准输入文件描述符是$*in(在Perl5中,*STDINtypeglob将STDIN文件描述符引用为*STDIN{IO}) 从标准输入读取数据的一种方法如下: for lines() { say "Read: ", $_ } 事实上,没有invocant对象的lines()在.lines()中默认为$*In 使用局部变量的替代方法是: for
我认为有很多方法可以做到这一点,但我对最惯用的Perl6解决方案感兴趣。Perl6中的标准输入文件描述符是
$*in
(在Perl5中,*STDIN
typeglob将STDIN文件描述符引用为*STDIN{IO}
)
从标准输入读取数据的一种方法如下:
for lines() {
say "Read: ", $_
}
事实上,没有invocant对象的lines()
在.lines()中默认为$*In
使用局部变量的替代方法是:
for $*IN.lines() -> $line {
say "Read: ", $line
}
看到更多的替代方法会很酷。您也可以使用
slurp
不带参数地重复整个标准输入。这段代码会把整个输入都弄脏并打印出来
print slurp;
如果想要获取行,可以使用lines()
迭代器,就像Perl5中的
一样工作。请注意,与Perl5不同的是,它会自动选择行
for lines() {
say $_;
}
当您想要获取单行时,可以使用get
,而不是使用lines()
迭代器
say get();
如果您需要向用户询问某事,请使用prompt()
当然
slurp()
不带参数的slurp在中表示您的$*。具体地说,*STDIN
是一个typeglob而不是一个文件描述符。与该typeglob关联的I/O句柄是*STDIN{IO}
。该I/O句柄filehandle–dirhandle对的filehandle组件的文件描述符编号为fileno(*STDIN{IO})
@GlitchMr:为什么不回答这个问题?@cosimo Add还请按块和/或不同分隔符读取–变量的类比。
my $name = prompt "Who are you? ";
say "Hi, $name.";