检查是否存在哈希密钥创建密钥

gda*_*nko 6 perl hash

给出以下代码

#!/usr/bin/perl

use Data::Dumper;

my %hash;
my @colos = qw(ac4 ch1 ir2 ird kr3);

foreach my $colo (@colos) {
    if(exists $hash{output}{$colo}) {
        print "$colo is in the hash\n";
    }
}

print Dumper(\%hash);
Run Code Online (Sandbox Code Playgroud)

我有一个空哈希创建.我有一个数组,里面有几个缩写.如果我遍历数组以查看这些人是否在哈希中,则没有任何内容显示给STDOUT,这是预期的但是由于某种原因创建了$ hash {output}.这根本不符合逻辑.我所做的只是存在.我哪里做错了?

Dan*_*mer 7

exists在给定的哈希中查找哈希元素.您的代码自动生成哈希
%{ $hash{output} }并检查该哈希中$colo是否存在带密钥的哈希元素.

请尝试以下方法:

if(exists $hash{output}{$colo}) {
Run Code Online (Sandbox Code Playgroud)

变成

if(exists $hash{output} and exists $hash{output}{$colo}) {
Run Code Online (Sandbox Code Playgroud)

当然,您可以编写一个隐藏代码复杂性的子程序.