返回perl脚本的状态



我遇到了以下脚本,

$num=53535.35353535;
$result1=printf("Result = %.2fn",$num);
print "$result1 n";
print $?;   # prints the return status

脚本的输出为,

53535.35
1
0

我看到打印的返回状态存储在$result1中,即1。由于打印执行得很好,因此它是成功的,并且它的真实条件显示为1。而脚本的返回状态为$?,为0。

此脚本中的1和0都为真吗?如果我错了,请纠正我。

Perldoc没有指定printf的返回值,所以捕获和评估它是没有意义的。不管你做什么,它似乎都是1。

至于$?,它显示了您通过system或backticks等运行的最后一个外部程序的退出状态。您没有运行任何外部程序,所以它也没有意义。

顺便说一句,你必须小心退出状态,因为0意味着成功,其他的都是错误。system还返回外部程序的退出状态,您可能会想这样做:

system "someprogram" or print "Error in someprogramn";

这是错误的,因为0意味着成功,但Perl将零视为错误。相反,它应该是:

system "someprogram" and print "Error in someprogramn";

这有点违背直觉,而且很难阅读。所以这样做更好:

print "Error in someprogramn" if system "someprogram" != 0;

最新更新