以下代码段未按预期工作:
$k{"foo"}=1;
$k{"bar"}=2;
if(not defined($k{"foo"}) && not defined($k{"bar"})){
print "Not defined\n";
}
else{
print "Defined"
}
由于 $k{"foo"} 和 $k{"bar"} 都已定义,因此预期输出为“已定义”。但是,运行代码会返回“未定义”。
现在,玩弄代码我意识到在每个调用周围放置括号not defined()
会产生所需的结果:
if((not defined($k{"foo"})) && (not defined($k{"bar"}))){print "Not Defined"}
我想这与运算符优先级有关,但有人可以解释到底发生了什么吗?