我的代码:
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;
在这种情况下也没有回应。
你真的有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)