如何在Perl6中执行外部命令并捕获其输出?如何在perl6中执行外部命令并捕获其输出?
Perl5的风格背蜱似乎不工作:
> my $results = `ls`;
Confused at line 1, near "my $results"
Synopsis 16记录了运行方法,但它返回退出状态,而不是从标准输出输出。
我正在使用Rakudo实现(rakudo-star-2010.12)。
如何在Perl6中执行外部命令并捕获其输出?如何在perl6中执行外部命令并捕获其输出?
Perl5的风格背蜱似乎不工作:
> my $results = `ls`;
Confused at line 1, near "my $results"
Synopsis 16记录了运行方法,但它返回退出状态,而不是从标准输出输出。
我正在使用Rakudo实现(rakudo-star-2010.12)。
使用qqx或QX代替,例如:
> my $results = qqx{ls};
Larry Wall的answered邮件列表上的等效问题:
[...]
:什么反引号替换或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
class提供更多细节。
我在发布问题之前找到了答案,但无论如何都发布了它,以防其他人有用。 – mattbh 2011-01-10 05:06:16