首页 > 解决方案 > 如何从perl中的哈希数组中获取键值

问题描述

我的代码:

my @emp_details = [
    {
        CID => '21',
        ID => '1',
        ORDERING => '1',
        PID => '143'
    },
    {
        CID => '22',
        ID => '2',
        ORDERING => '1',
        PID => '67'
    }
];

预期输出:所有键的值 - ID,即: [1,2]

即需要同时获取the emp_details列表中的哈希值并从每个 ID 中获取值。

在perl中怎么做?

我的试验:

my %hash =
map {$_->{ID} } @departments;

错误:Not a HASH reference

我试过了map {$_->{ID} } %departments;

在这种情况下也没有任何回应。

标签: perlhash

解决方案


你真的有my @emp_details = [ ... ];吗?[]构造一个数组并返回对它的引用,这意味着@emp_details将填充单个元素(对数组的引用)。

我将假设您有以下内容:

my @emp_details = (
    {
        CID => '21',
        ID => '1',
        ORDERING => '1',
        PID => '143'
    },
    {
        CID => '22',
        ID => '2',
        ORDERING => '1',
        PID => '67'
    }
);

好吧,您尝试的第一个问题是数组名为@emp_details,而不是@departments

您尝试的第二个问题是您将 id 列表分配给哈希,这没有意义。

固定的:

my @ids = map { $_->{ID} } @emp_details;

推荐阅读