如何在Perl 6中的命令行上传递任意参数列表?

Cyb*_*ull 7 perl6

我知道如何将命令行上的单个和命名参数传递给Perl 6脚本,但是如何传递任意参数列表?

例如,

script.pl6 fileA.txt fileB.txt
Run Code Online (Sandbox Code Playgroud)

然后运行它

script.pl6 fileC.txt fileD.txt .. fileZ.txt
Run Code Online (Sandbox Code Playgroud)

Chr*_*oph 10

原始命令行参数可以在中找到@*ARGS.

您还可以使用&MAIN带有slurpy参数的sub ,即

sub MAIN(*@args) { ... }
Run Code Online (Sandbox Code Playgroud)

请注意,这将拒绝传递标志的调用.如果你想捕获它们,请使用

sub MAIN(*@args, *%flags) { ... }
Run Code Online (Sandbox Code Playgroud)

  • @Cyber​​Skull 正如@Christoph 提到的,您可以使用 %flags 访问它们(当您使用 *%flags 作为 MAIN 参数时)。因此,例如“--list1”可以通过`%flags<list1>` 访问。您还可以将其专门添加为 MAIN 参数,如下所示:`sub MAIN (:$list1, *@args, *%flags) {...}` (2认同)