【问题标题】:backticks do not return any value in perl反引号在 perl 中不返回任何值
【发布时间】:2012-02-16 00:04:21
【问题描述】:

我在 Cygwin 环境中编写了一个 perl 脚本。在里面,我使用反引号来执行另一个程序,并将返回值分配给一个变量。两周前我在 cygwin 中升级了一些软件包之前它运行良好。现在反引号不返回任何值。有什么想法吗?

【问题讨论】:

  • 显而易见的问题是“当您从命令行手动执行程序时会发生什么?”还能用吗?
  • 你能把带有反引号的实际命令,或者它的一些副本放在问题中吗?这里没什么可做的。
  • command1.exe file1 file2 cutoff1 command1.exe 是我在 VB 中编写的命令。它读取file1 file2,然后进行一些计算并输出通过cutoff1的结果。 system ("command1.exe file1 file2 cutoff1") 工作正常。

标签: perl


【解决方案1】:

尝试检查 $? 的值。它包含最后执行的外部命令的返回码,但它被重载以包含额外的信息,例如杀死命令的信号以及是否存在核心转储等。

实际返回码可以通过

my $return_code = $? >> 8;

如果为零,则命令执行成功,如果不成功,则该命令退出时的错误状态(例如 int main() 在 C 中返回的内容)。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多