如何在Perl6中执行外部命令并捕获其输出?
Perl5风格的后退似乎不起作用:
> my $results = `ls`;
Confused at line 1, near "my $results"
Synopsis 16记录 run 方法,但这会返回退出状态,而不是stdout的输出。
我正在使用Rakudo实现(rakudo-star-2010.12)。
答案 0 :(得分:16)
使用qqx或qx代替,例如:
> my $results = qqx{ls};
Larry Wall answered邮件列表中的同等问题:
[...]
:什么取代反引号或qx {}?
qqx []或qq:x []将是确切的 当量。 qx []或q:x []将是 与单引号语义相同。 (可能没有任何反对 这个目的,因为我们保留` 对于用户定义的东西,因为 反叛在视觉上很难 从单引号中可以看出很多 字体。)
答案 1 :(得分:4)
截至2015年1月:
Recently verified tutorial page
Recent discussion of rationalizing what gets returned by what
答案 2 :(得分:4)
这也可以使用run()
out
参数安全地完成(无需触摸shell):
my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;
Proc
class中提供了更多详细信息。