perl6如何从stdin读取并获取命令行参数?

时间:2016-12-22 06:18:56

标签: stdin args perl6

我需要输出" 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

非常感谢

1 个答案:

答案 0 :(得分:5)

lines功能是$*ARGFILES.lines的快捷方式 $*ARGFILES是一个魔术文件句柄,表示指定为命令行参数(@*ARGS)的文件的串联,仅当@*ARGS为空时才会回退到stdin。

如果您总是想从标准输入读取,请使用$*IN.lines

for $*IN.lines {
    say "reading ==> $_";
}

或者,让代码修改@*ARGS以删除您不希望被解释为文件名的任何命令行参数,然后然后使用lines()