迭代数组引用并在perl中转换为哈希

时间:2019-03-06 15:48:49

标签: perl

我有一个哈希(由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) {
......
}

1 个答案:

答案 0 :(得分:3)

在我看来,这似乎是一个XY问题-我猜您正在尝试转换一些XML,因此建议您向上游看以解决此问题。

但是,如果不是这样,那么:

$data -> {items} = { map { $_ -> {id} => $_ } @{$data->{items} } };