内置变量$的含义是什么?在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的基本问题也没什么错,但如果你真的想成为一名有能力的程序员,你需要养成自己阅读文档的习惯,并培养自己理解文档的能力

否则,您将浪费宝贵的时间来解决问题,而不是等待他人为您阅读文档


如果您选择从不花费任何精力试图理解文档,这确实不会影响我们其他人,但从长远来看,这会伤害您。

太好了!。。现在我理解了它在代码中的实际含义。感谢您详细的回答。位移位的原因是
$?
包含POSIX
wait()
函数返回的完整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;
   }