如果评估递增值

时间:2016-09-09 07:56:59

标签: perl

我试图抓住我的值未初始化并增加它的情况。根据我的阅读,$value将根据上下文行事(如果我连接它,它将作为空字符串,如果我增加它,它将作为0)。

我不明白为什么上面的代码给了我: The value outside of the if: 1并且它也没有显示:The value from if: 1

use strict;
use warnings;

my $value;

if (( $value++) == 1){
    print "The value from if: $value";
}

print "The value outside of the if: $value";

1 个答案:

答案 0 :(得分:5)

您正在使用auto-increment operator

后增量形式
  

“++”和“ - ”在C中工作。也就是说,如果放在变量之前,它们会在返回值之前将变量递增或递减1,如果放在后面,则在返回之后递增或递减值。

因此,首先返回递增之前的值,并在语句中使用该值,因此使用它评估条件并发现为false。递增的值将在下次计算变量时使用。使用++$value,它可以满足您的期望。至少可以说,这显然有点棘手。

请注意,您提到的string-vs-number魔法仅适用于增量,减少运算符。请参阅上面的perlop页面。