次のような Perl スクリプトがあるとします。
my $hash = {};
$hash->{'a'} = {aa => 'b'};
$hash->{'b'} = undef;
for (qw(a b c)) {
    if(defined $hash->{$_}->{aa})
    {
        say "defined $_";
    }
    else
    {
        say "undef $_";
    }
}
print Dumper $hash;
しかし、私の出力は「c」を自動作成しますが、これは望ましくありません。
defined a
undef b
undef c
$VAR1 = {
      'c' => {},
      'a' => {
               'aa' => 'b'
             },
      'b' => {}
    };
また、私のディストリビューションでは、自動有効化を無効にすることはできません。各レベルをチェックするサブルーチンを作成する方法はありますか?