可能重复:
perl"美元符号和问号"问题
我试图理解某人写的Perl脚本.我不明白$?脚本中的用法.谁能解释一下下线的目的?
system( "perform_task.sh", "-param1");
if( ( $? >> 8 ) != 0 ) {
print( "perform_task.sh failed " );
}
Run Code Online (Sandbox Code Playgroud)
要查找任何变量的含义,您可以键入
$ perldoc -v '$?'
在命令行上perldoc perlvar安装了相对较新版本的Perl或扫描程序.通常,最好阅读perl您所拥有的特定版本的文档,但在紧要关头,考虑到由于版本差异而导致的任何可能的问题,在线版本也会这样做:perldoc -v'$?' :
通过最后的管道关闭,反引号(返回的状态
``)命令,成功调用wait()或者waitpid(),还是从system()运营商.这只是传统Unixwait()系统调用返回的16位状态字(或者看起来像是这样).因此,子进程的退出值确实是($? >> 8),并$? & 127提供进程死亡的信号(如果有的话),并$? & 128报告是否存在核心转储.
可以从perldoc -f系统的文档中收集更多信息:
如果您想手动检查"系统"的故障,可以通过检查
$?以下方式检查所有可能的故障模式:
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $? >> 8;
}
Run Code Online (Sandbox Code Playgroud)
虽然在Stackoverflow上询问甚至是基本问题也没有什么不妥,如果你真的想成为一个有能力的程序员,你需要养成自己阅读文档的习惯,并培养自己理解它的能力.
否则,您将浪费宝贵的时间来解决问题而不是等待其他人为您阅读文档.
如果您选择不花费任何努力来理解文档,它确实不会影响我们其他人,但从长远来看它会伤害到您.
| 归档时间: |
|
| 查看次数: |
6014 次 |
| 最近记录: |