简单来说,我该如何在Perl6中从STDIN读取输入?
我认为有很多种方法可以做到这一点,但我对最符合习惯用法的Perl6解决方案感兴趣。
在Perl6中,标准输入文件描述符为$*IN
(在Perl5中,*STDIN
类型的全局变量引用了STDIN文件描述符,如*STDIN {IO}
)。
从标准输入读取的一种方式如下:
for lines() {
say "Read: ", $_
}
事实上,没有调用对象的lines()
默认为$*IN.lines()
。
一种使用本地变量的替代方法是:
for $*IN.lines() -> $line {
say "Read: ", $line
}
希望能看到更多其他的实现方式。
你还可以使用不带参数的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.";
slurp()
函数会读取你的$*IN
。 - Konrad Borowski*STDIN
是一个类型环境(typeglob)而不是文件描述符(file descriptor)。与该类型环境相关联的I/O句柄是*STDIN{IO}
。该I/O句柄文件句柄-目录句柄对中文件句柄组件的文件描述符编号是fileno(*STDIN{IO})
。 - tchrist$/
变量。 - Hans Ginzel