我需要输出" 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
非常感谢
答案 0 :(得分:5)
lines
功能是$*ARGFILES.lines
的快捷方式
$*ARGFILES
是一个魔术文件句柄,表示指定为命令行参数(@*ARGS
)的文件的串联,仅当@*ARGS
为空时才会回退到stdin。
如果您总是想从标准输入读取,请使用$*IN.lines
:
for $*IN.lines {
say "reading ==> $_";
}
或者,让代码修改@*ARGS
以删除您不希望被解释为文件名的任何命令行参数,然后然后使用lines()