首页 > 解决方案 > 通过在 Perl 中通过数组的哈希映射第一个索引来获取第二个索引的值

问题描述

我有一个 Perl 文件代码 state.pl,我试图在其中根据数组哈希中的状态代码检索状态的全名。以下是代码:

my $all_state_details = {
          IN => [
                  [
                    "AP",
                    "Andhra Pradesh"
                  ],
                  [
                    "AN",
                    "Andaman and Nicobar Islands"
                  ],
                  [
                    "AR",
                    "Arunachal Pradesh"
                  ],
                ],
        US => [
                  [
                    "AL",
                    "Alabama"
                  ],
                  [
                    "AK",
                    "Alaska"
                  ],
                  [
                    "AS",
                    "American Samoa"
                  ],
                ],
        };

my $state = 'AN';
my $country = 'IN';

my @states = $all_state_details->{$country};
my @state_name = grep { $_->[0] eq $state } @states;
print @state_name;

当我运行脚本时,我得到空白输出

我想要的输出只是:

Andaman and Nicobar Islands

标签: arraysperlhash

解决方案


@{ ... }取消引用操作对于将数组引用转换$all_state_details->{$country}为适合与 一起使用的数组是必要的grep

print map { $_->[1] } 
     grep { $_->[0] eq $state } @{$all_state_details->{$country}};

推荐阅读