如何在perl6中执行外部命令并捕获其输出?

时间:2011-01-10 04:48:12

标签: process perl6 raku rakudo

如何在Perl6中执行外部命令并捕获其输出?

Perl5风格的后退似乎不起作用:

> my $results = `ls`;
Confused at line 1, near "my $results"

Synopsis 16记录 run 方法,但这会返回退出状态,而不是stdout的输出。

我正在使用Rakudo实现(rakudo-star-2010.12)。

3 个答案:

答案 0 :(得分:16)

使用qqx或qx代替,例如:

> my $results = qqx{ls};

Larry Wall answered邮件列表中的同等问题:

  

[...]

     

:什么取代反引号或qx {}?

     

qqx []或qq:x []将是确切的   当量。 qx []或q:x []将是   与单引号语义相同。   (可能没有任何反对   这个目的,因为我们保留`   对于用户定义的东西,因为   反叛在视觉上很难   从单引号中可以看出很多   字体。)

答案 1 :(得分:4)

答案 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中提供了更多详细信息。