内置变量$的含义是什么?在Perl中
可能重复:内置变量$的含义是什么?在Perl中,perl,system,Perl,System,可能重复: 我试图理解某人编写的Perl脚本。我不理解脚本中$?的用法。谁能给我解释一下下面这句话的目的吗 system( "perform_task.sh", "-param1"); if( ( $? >> 8 ) != 0 ) { print( "perform_task.sh failed " ); } 使用英语名称是$CHILD\u ERROR。孩子的退出状态,包括导致其退出的可能信号号。请参阅perldoc perlvar$?子进程的错
我试图理解某人编写的Perl脚本。我不理解脚本中
$?
的用法。谁能给我解释一下下面这句话的目的吗
system( "perform_task.sh", "-param1");
if( ( $? >> 8 ) != 0 ) {
print( "perform_task.sh failed " );
}
使用英语$?
的代码>名称是$CHILD\u ERROR
。孩子的退出状态,包括导致其退出的可能信号号。请参阅perldoc perlvar$?子进程的错误代码(perform_task.sh)
在脚本的情况下,返回代码向右移位8位,结果与0进行比较。
这意味着只有当返回的代码大于255时,运行才会被视为失败。要查找任何变量的含义,您可以键入
$ perldoc -v '$?'
即使是问一些关于Stackoverflow的基本问题也没什么错,但如果你真的想成为一名有能力的程序员,你需要养成自己阅读文档的习惯,并培养自己理解文档的能力
否则,您将浪费宝贵的时间来解决问题,而不是等待他人为您阅读文档
如果您选择从不花费任何精力试图理解文档,这确实不会影响我们其他人,但从长远来看,这会伤害您。太好了!。。现在我理解了它在代码中的实际含义。感谢您详细的回答。位移位的原因是$?
包含POSIXwait()
函数返回的完整16位状态,该函数包括进程的返回码和终止它的信号号(如果有)。如果返回代码为非零,则测试失败。
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;
}