如何在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;