我正在进行以下操作,但它并没有正常工作:
这是将布尔值分配给标量变量的可接受方式吗?我的代码表现出奇怪的行为,我认为是因为这个赋值。我已经验证了所有这些键的单个值都存在并设置了一个值。
附言:抱歉我是个新手!我谷歌了大约10分钟,但无处找到答案。
my $enabled = $hash &&
$hash->{'key'} &&
$hash->{'key'}->{'enabled'} &&
$hash->{'key'}->{'active'};
这是将布尔值分配给标量变量的可接受方式吗?我的代码表现出奇怪的行为,我认为是因为这个赋值。我已经验证了所有这些键的单个值都存在并设置了一个值。
附言:抱歉我是个新手!我谷歌了大约10分钟,但无处找到答案。
3
是一个真值。然而,Squawk 的代码将会赋值为$hash->{key}->{active}
的值,如果其他谓词都是真的,则可能是他的问题的来源。例如,如果它被打印出来,连接或用于进一步计算。例如,字符串是真的,但通常是数字零。如果双重否定可以解决问题,则问题就在这里。(注意:所有不等于 0 的数字都是真的,包括负数) - amon&&
序列中任何一个谓词为 false,你将分配该值(无论它是零、空字符串、undef
还是重载对象)。如果哈希条目不存在,则会得到undef
值。如果所有其他部分都为 true,则会分配最后一个值。 - amon