【问题标题】:Run a program and capture its output运行程序并捕获其输出
【发布时间】:2017-08-30 18:32:04
【问题描述】:

我有一个运行 python 脚本的 Perl 脚本,但我需要将信息传递回 Perl 脚本。 任何人都可以帮助我实现这一目标?

这是我目前的代码

open(my $py, "|-", "python2 /home/pi/myRead.py") or die "Cannot run Python script: $!";
while (<$py>) {
    $newCard = $py;
}
close($py);

【问题讨论】:

标签: perl raspberry-pi raspbian


【解决方案1】:
my $newCard = `python2 /home/pi/myRead.py`;

【讨论】:

  • 我发誓这是我的第一次尝试,但没有成功。现在工作了。 TY
  • 不要使用反引号。使用qx。例如。 my $newCard = qx@ python /home/pi/myRead.py@;
  • @William Pursell,为什么??? `...`qx`...` 的缩写,是readpipe(qq`...`) 的缩写。
  • @William Pursell,您可能会说qx(...) 更具可读性,但这不是您推荐的。
  • 争论的依据是什么? qq@@ 增加了噪音、陌生感和复杂性,所有阻碍提高了可读性。最重要的是,它改变了@ 的含义,大大降低了可读性。最后,qq@@ 还降低了可用性(通过防止数组插值)。所有这些,并没有增加任何好处。它显然会损害可读性(和可用性)。 /// 另一方面,qq() 也增加了噪音和陌生感,但也增加了平衡的分隔符,增加了一点可读性。足以克服噪音和陌生感?值得商榷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 2017-08-15
  • 2021-03-14
相关资源
最近更新 更多