返回perl脚本的状态

时间:2015-03-27 06:21:17

标签: perl

我遇到了以下脚本,

$num=53535.35353535;

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

脚本的输出是,

53535.35
1
0

我看到打印的返回状态存储在$result1中,即1.由于打印执行正常,因此成功,其真实条件显示为1.而脚本的返回状态为{{1}这是0。

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

1 个答案:

答案 0 :(得分:2)

Perldoc未指定printf的返回值,因此捕获和评估它是没有意义的。无论你做什么,它似乎都是1。

至于$?,它会显示您通过system或反引号等运行的最后一个外部程序的退出状态。您没有运行任何外部程序,因此它也没有意义。

顺便说一下,你必须小心退出状态,因为0表示成功,其他任何错误。 system也会返回外部程序的退出状态,您可能会想要这样做:

system "someprogram" or print "Error in someprogram\n";

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

system "someprogram" and print "Error in someprogram\n";

这种反直觉且难以阅读。所以这样做更好:

print "Error in someprogram\n" if system "someprogram" != 0;
相关问题