perl 为什么这个否定条件会变为真?[closed]

pn9klfpd  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(130)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

5个月前关闭。
Improve this question
我有下面的代码,我搞混了(if (!$ACTIVE{$id}) {)条件.

my %ACTIVE = (
          '2' => $VAR1->{'17'},
          '12' => $VAR1->{'17'},
          '18' => $VAR1->{'15'},
          '11' => $VAR1->{'15'},
          '3' => $VAR1->{'17'},
          '5' => $VAR1->{'17'}
);

my %NAMES = (
     '3' => 'IND',
     '2' => 'UK',
     '5' => 'USA',
     '11' => 'SA',
     '12' => 'AUS',
     '18' => 'CAN'
);

my $id = 3; #Input

if ($id) {
     my $name = $NAMES{$id};
     if (!$ACTIVE{$id}) {
          print "Region \'$name\' is not active\n";
     } else {
          print "Region \'$name\' is active\n"
     }
}

因为$id是我的输入,并且根据$ACTIVE{$id}的条件值是存在于散列中的$VAR1->{'17'}
我认为它应该打印“区域'IND'是活动的”,但它打印“区域'IND'是不活动的”。有人能说为什么吗?即使我有活动ID 3的值。

n6lpvg4x

n6lpvg4x1#

$ACTIVE{3}$VAR1->{'17'},这是一个错误值,因为$VAR1不存在。
如果您使用use strict; use warnings;,这个问题就会突出显示。

相关问题