【问题标题】:What does a dollar sign followed by a question mark mean in Perl?在 Perl 中,美元符号后跟问号是什么意思?
【发布时间】:2011-06-09 02:57:13
【问题描述】:

在以下 Perl 脚本中:

$a=apple
$b=orange

if ($?==0) {
  # do something
}

$? 在这里是什么意思?

【问题讨论】:

  • 我希望 Google 可以更轻松地直接搜索这类事情,而不必知道您在寻找什么……
  • bash 还有一个$? 具有类似功能的变量
  • @KarlKnechtel 我不知道symbolhound.com 6 年前是否已经存在,但现在它存在。试试symbolhound.com/?q=perl+%24%3F。他们说“SymbolHound 是一个不会忽略特殊字符的搜索引擎。这意味着您可以轻松搜索 &、% 和 π 等符号。”

标签: perl


【解决方案1】:

这是最后一个系统操作、管道或反引号操作返回的状态。请参阅参考资料perlvar。

【讨论】:

  • 好:该参考实际上解释了如何解压等待状态 16 位数量。然而,在传统的 Uɴɪx 系统上,终止信号编号是 ($? & 127),而 coredump 标志是 ($? & 128)。子退出状态为($? >> 8)。我不知道对于信号位多于这些位的系统会发生什么。
【解决方案2】:

$? 以及所有其他“神奇”变量都记录在 Perl 联机帮助页的 perlvar 部分。如果您实际上没有使用 man 命令的类 Unix 设置,您也应该可以在 Google 上搜索 man perlvar。

【讨论】:

  • 我认为这不是一个有效的答案。参考文档是可以的,但是SO的想法是有具体的问题有具体的答案。
【解决方案3】:

其他人已经回答了$?的含义的问题。

我想我还要提一下,也可以在命令提示符下获得有关 Perl 特殊变量的帮助:

perldoc -v $?

根据您的 shell,您可能需要转义 $。

perldoc -h

【讨论】:

    【解决方案4】:

    $?或 $CHILD_ERROR(如果使用英语)包含最后一个 backtic 的状态(或从 Perl 运行子进程的几种方法。)请参阅 perlvar 以获取完整说明。

    【讨论】:

    • 事实上,我在 shift 之前得到 256,所以在 shift 之后我得到 1。为什么是 1?是否有描述错误代码的错误代码数据库
    • 无论如何,我发现批处理脚本返回了一些错误,因为我使用了 findstr,所以在这个 perl 脚本触发的批处理脚本结束时,我插入了一个 echo 命令来欺骗它相信一切都是好的...
    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多