如何在 Perl6 中执行外部命令并捕获其输出?
Perl5 风格的反引号似乎不起作用:
> my $results = `ls`;
Confused at line 1, near "my $results"
概要 16记录了run方法,但这会返回退出状态而不是 stdout 的输出。
我正在使用 Rakudo 实现(rakudo-star-2010.12)。
请改用 qqx 或 qx,例如:
> my $results = qqx{ls};
Larry Wall在邮件列表中回答了一个相同的问题:
[...]
:用什么代替反引号或 qx{} ?
qqx[] 或 qq:x[] 将是完全等价的。qx[] 或 q:x[] 与单引号语义相同。(可能没有用于该目的的反引号,因为我们将 ` 保留用于用户定义的内容,并且因为在许多字体中很难从单引号中分辨出反引号。)
这也可以使用run()
以下out
参数安全地完成(无需接触外壳):
my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;
更多细节可在Proc
课堂上找到。