我有一个哈希(由Dumper打印),如下所述
$VAR1 = {
'items' => [
{
'name' => 'test1',
'id' => '1',
'desc' => 'desc1',
},
{
'name' => 'test2',
'id' => '2',
'desc' => 'desc2',
}
],
};
我需要将数组引用的“ items”转换为如下所示的哈希。 (“ items”将是散列的哈希,其值为“ id”作为键)
$VAR1 = {
'items' => {
'1' =>{
'name' => 'test1',
'id' => '1',
'desc' => 'desc1',
},
'2' => {
'name' => 'test2',
'id' => '2',
'desc' => 'desc2',
}
}
};
让我们从下面的代码开始。 (假设$ data代表原始数据,$ newitems代表修改后的项目)
my $data;
my $items = $data->{items};
my %newitems;
foreach my $element (@$items) {
......
}
答案 0 :(得分:3)
在我看来,这似乎是一个XY问题-我猜您正在尝试转换一些XML,因此建议您向上游看以解决此问题。
但是,如果不是这样,那么:
$data -> {items} = { map { $_ -> {id} => $_ } @{$data->{items} } };