什么印刷?

时间:2014-03-19 03:28:15

标签: perl die

以下是我尝试执行的代码

$a=0;  
if($a==0){die  print"zero"};  

我输出如下

1 at test.pl line 2  
Zero  

我想知道首先打印的1是什么,是不是像die这样打印if语句返回的值?任何帮助都是适当的

2 个答案:

答案 0 :(得分:8)

die print "zero";

die将使用print "zero";的返回值1作为其参数。所以你看到了1 at ...消息。

默认情况下,交互式程序的STDOUT是行缓冲的,但STDERR是无缓冲的,这就是为什么你首先看到1 at ...(在stderr上)和{{1} (稍后在stdout上)。如果您将zero更改为print "zero",您会看到print "zero\n"排在第一位。

答案 1 :(得分:1)

实际上,print函数返回1,它会立即插入到错误消息中。

Control永远不会返回到if stmt。