在Perl中,美元符号后面跟一个问号代表什么意思?

10

以下是Perl脚本中的内容:

$a=apple
$b=orange

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

这里的 $? 是什么意思?


10
希望谷歌搜索这种东西直接一点就好了,不需要知道你在寻找什么... - Karl Knechtel
bash 还有一个类似功能的 $? 变量。 - mob
4个回答

14

这是最近一次系统操作、管道或倒引号操作返回的状态。请参考perlvar


好的:该参考实际上解释了如何解压等待状态的16位数量。然而,在传统的Unix系统上,终止信号号码是 ($? & 127),而核心转储标志是 ($? & 128)。子进程退出状态是 ($? >> 8)。我不知道那些具有比这些更多信号位的系统会发生什么。 - tchrist

10

$?和所有其他"magic"变量都在Perl manpages的perlvar部分有详细记录。如果您没有Unix-like设置和man命令,则还可以通过Google搜索man perlvar来找到它们。


2
我认为这不是一个有效的答案。引用文档是可以的,但 SO 的理念是提出具体问题并给出具体答案。 - Christian Vielma

5

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

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

perldoc -v $?

根据您使用的shell不同,您可能需要转义$符号。

perldoc -h


4

$?或$CHILD_ERROR(如果使用英语)包含上一个反引号(或从Perl运行子进程的多种方式)的状态。请参见perlvar以获取完整说明。


事实上,在移位之前我得到了256,所以在移位之后我得到了1。为什么是1?是否有一个错误代码数据库来描述这个错误代码? - tweakmy
无论如何,我发现批处理脚本使用了findstr命令导致出现了一些错误。因此,在这个Perl脚本触发的批处理脚本的末尾,我插入了一个echo命令来欺骗它相信一切都是正常的... - tweakmy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接