如何从 perl 中的哈希数组中获取键值

-1 perl hash

我的代码:

my @emp_details = [
    {
        CID => '21',
        ID => '1',
        ORDERING => '1',
        PID => '143'
    },
    {
        CID => '22',
        ID => '2',
        ORDERING => '1',
        PID => '67'
    }
];
Run Code Online (Sandbox Code Playgroud)

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

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

在perl中怎么做?

我的试验:

my %hash =
map {$_->{ID} } @departments;
Run Code Online (Sandbox Code Playgroud)

错误输出: Not a HASH reference

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

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

ike*_*ami 5

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

我将假设您有以下内容:

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

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

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

固定的:

my @ids = map { $_->{ID} } @emp_details;
Run Code Online (Sandbox Code Playgroud)