#!/usr/bin/perl -w
use strict;
my @extensiveArray = ((
id => 1,
name => 'Bob',
),
(
id => 2,
name => 'Barley',
),
(
id => 3,
name => 'Marley',
)
);
my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;
这段代码出了什么问题,它给了我错误“不能使用字符串{id}作为HASH参考,而'严格参考'在使用中”
答案 0 :(得分:4)
您需要在@extensiveArray
内使用哈希引用。你现在拥有的是一个单一的清单。 Perl不支持嵌套列表。
my @extensiveArray = (
{
id => 1,
name => 'Bob',
},
{
id => 2,
name => 'Barley',
},
{
id => 3,
name => 'Marley',
}
);
执行此操作后,由于{}
,您将收到错误匿名哈希值奇数个元素。
# here #
my %hashRef = map { $_->{id} => { $_->{name} } } @extensiveArray;
如果要从map
返回键/值对,只需返回一个平面列表。这真的是哈希。
my %hashRef = map { $_->{id} => $_->{name} } @extensiveArray;
您应该查看perlreftut以及其他相关网页。