我试图抓住我的值未初始化并增加它的情况。根据我的阅读,$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";
答案 0 :(得分:5)
“++”和“ - ”在C中工作。也就是说,如果放在变量之前,它们会在返回值之前将变量递增或递减1,如果放在后面,则在返回之后递增或递减值。
因此,首先返回递增之前的值,并在语句中使用该值,因此使用它评估条件并发现为false。递增的值将在下次计算变量时使用。使用++$value
,它可以满足您的期望。至少可以说,这显然有点棘手。
请注意,您提到的string-vs-number魔法仅适用于增量,不减少运算符。请参阅上面的perlop
页面。