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

发布于 2024-10-11 11:43:41 字数 325 浏览 3 评论 0原文

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

Perl5 风格的反引号似乎不起作用:

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

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

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

How can I execute an external command and capture its output in Perl6?

Perl5-style back-ticks don't seem to work:

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

Synopsis 16 documents the run method, but this returns the exit status rather than the output from stdout.

I'm using the Rakudo implementation (rakudo-star-2010.12).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

优雅的叶子 2024-10-18 11:43:42

请使用 qqx 或 qx,例如:

> my $results = qqx{ls};

Larry Wall 回答邮件列表上的一个等效问题:

[...]

:什么可以替代反引号或 qx{}?

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

Use qqx or qx instead, e.g.:

> my $results = qqx{ls};

Larry Wall answered an equivalent question on a mailing list:

[...]

: What replaces backtick or qx{} ?

qqx[] or qq:x[] would be the exact
equivalent. qx[] or q:x[] would be
the same with single-quote semantics.
(There are probably no backticks for
that purpose since we're reserving `
for user-defined stuff, and because
backticks are visually difficult to
tell from single quotes in many
fonts.)

憧憬巴黎街头的黎明 2024-10-18 11:43:42

这也可以使用带有 out 参数的 run() 安全地完成(无需接触 shell):

my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;

更多详细信息请参见 Proc

This can also be done safely (without touching a shell) using run() with the out parameter:

my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;

More details available in the Proc class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文