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

如何在perl中从哈希数组中获取键值,perl,hash,Perl,Hash,我的代码: my @emp_details = [ { CID => '21', ID => '1', ORDERING => '1', PID => '143' }, { CID => '22', ID => '2', ORDERING => '1', PID => '67' } ];

我的代码:

my @emp_details = [
    {
        CID => '21',
        ID => '1',
        ORDERING => '1',
        PID => '143'
    },
    {
        CID => '22',
        ID => '2',
        ORDERING => '1',
        PID => '67'
    }
];
预期输出:所有键ID的值,即:
[1,2]

i、 e.需要获取emp_详细信息列表中的两个哈希值,并从每个ID获取值

如何使用perl

我的审判:

my %hash =
map {$_->{ID} } @departments;
出错:
不是散列引用

我尝试了
map{$\u->{ID}}%的部门


在本例中也没有响应。

您构建的哈希数组不正确
[]
是匿名arrayref的构造函数,它是标量,但您将其放入数组中,从而生成一个具有一个值的数组:对另一个数组的引用。只需使用
()
(括号不会创建结构,但它们是优先于赋值运算符所必需的)


你真的有
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\u details
,而不是
@departments

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

固定的:

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

始终
严格使用;使用警告。是的,我的代码中已经有了这些。我这样说是因为在使用未声明的变量时,使用strict会导致明显的错误,例如
%departments
my @ids = map { $_->{ID} } @emp_details;