在 Perl 中解析 HoAoHoAoHoAoH

Parsing a HoAoHoAoHoAoH in Perl

我是 Perl 新手,对散列略有了解。我有一个哈希数组的哈希数组的哈希数组的哈希数组 (HoAoHoAoHoAoH),如下所示。

%my_hash = (
    key00 => 'value00',
    key01 => [
        {  key10 => 'value10',
           key11 => 'value11',
           key12 => [
               {   key20  => 'value20',
                   key21  => 'value21',
                   key22  => [
                       {   key30  => 'value30',
                           key31    => [
                               { color => 'blue',  quantity => 10, boxes => [0,1,3] },
                               { color => 'red',   quantity => 2,  boxes => [2,3]   },
                               { color => 'green', quantity => 5,  boxes => [0]     },
                           ],
                       },
                   ],
               },
           ]
        }
    ]
);

访问 "color"、"quantity" 和 "boxes" 的最简单方法是什么?我还需要对 "quantity" 进行算术运算,例如 10+2+5 (quantity0+quantity1+quantity2).

这看起来很像 XY 问题。你想在这里解决什么问题?

您可以像这样访问数据结构的元素:

print $my_hash{key01}[0]{key12}[0]{key22}[0]{key31}[0]{color},"\n";

您还可以通过以下方式迭代底部元素:

foreach my $something ( @{ $my_hash{key01}[0]{key12}[0]{key22}[0]{key31} } ) {
   print $something->{'color'};
   print $something->{'quantity'}
}

但这看起来不像是真正的问题 - 您 实际上 想要完成什么?我可能猜你正在尝试解析 XML 或类似的,在这种情况下几乎肯定有更好的方法。