perl6 如何从标准输入读取并获取命令行参数?
perl6 How to read from stdin and take command line args?
我需要将 "cat variousFiles" 的结果通过管道传输到 perl6 程序,同时要求该程序采用不同的命令行参数。 Perl6 似乎想要将第一个参数作为要读取的文件。我可以重写我的例程,但我想使用来自 shell 的管道。有办法吗?
这是我的程序 testStdInArgs.pl:
say @*ARGS;
for lines() {
say "reading ==> ", $_;
}
我想做(foo 和 bar 是参数):
cat logFile | perl6 testStdInArgs.pl foo bar
错误如下:
[foo bar]
Earlier failure:
(HANDLED) Unable to open file 'foo'
in block <unit> at stdInArgs.pl line 2
Final error:
Type check failed in binding to $iter; expected Iterator but got Failure (Failure.new(exception...)
in block <unit> at stdInArgs.pl line 2
非常感谢
lines
函数是 $*ARGFILES.lines
的快捷方式。
$*ARGFILES
是一个神奇的文件句柄,表示指定为命令行参数 (@*ARGS
) 的文件的串联,并且仅当 @*ARGS
为空时才回退到标准输入。
如果你总是想从标准输入读取,使用$*IN.lines
:
for $*IN.lines {
say "reading ==> $_";
}
或者,让您的代码修改 @*ARGS
以删除您不希望被解释为文件名的任何命令行参数,然后 然后 使用 lines()
.
我需要将 "cat variousFiles" 的结果通过管道传输到 perl6 程序,同时要求该程序采用不同的命令行参数。 Perl6 似乎想要将第一个参数作为要读取的文件。我可以重写我的例程,但我想使用来自 shell 的管道。有办法吗?
这是我的程序 testStdInArgs.pl:
say @*ARGS;
for lines() {
say "reading ==> ", $_;
}
我想做(foo 和 bar 是参数):
cat logFile | perl6 testStdInArgs.pl foo bar
错误如下:
[foo bar]
Earlier failure:
(HANDLED) Unable to open file 'foo'
in block <unit> at stdInArgs.pl line 2
Final error:
Type check failed in binding to $iter; expected Iterator but got Failure (Failure.new(exception...)
in block <unit> at stdInArgs.pl line 2
非常感谢
lines
函数是 $*ARGFILES.lines
的快捷方式。
$*ARGFILES
是一个神奇的文件句柄,表示指定为命令行参数 (@*ARGS
) 的文件的串联,并且仅当 @*ARGS
为空时才回退到标准输入。
如果你总是想从标准输入读取,使用$*IN.lines
:
for $*IN.lines {
say "reading ==> $_";
}
或者,让您的代码修改 @*ARGS
以删除您不希望被解释为文件名的任何命令行参数,然后 然后 使用 lines()
.