您需要通过设置:out 来启用默认为$*OUT 的标准输出管道。所以:
my $proc = run("uname", :out);
my $stdout = $proc.out;
say $stdout.slurp;
$stdout.close;
可以简写为:
my $proc = run("uname", :out);
say $proc.out.slurp(:close);
如果您想在 stderr 上与 stdout 分开捕获输出,您可以这样做:
my $proc = run("uname", :out, :err);
say "[stdout] " ~ $proc.out.slurp(:close);
say "[stderr] " ~ $proc.err.slurp(:close);
或者如果您想将 stdout 和 stderr 捕获到一个管道,那么:
my $proc = run("uname", :merge);
say "[stdout and stderr] " ~ $proc.out.slurp(:close);
最后,如果你不想捕获输出也不希望它输出到终端:
my $proc = run("uname", :!out, :!err);
exit( $proc.exitcode );