哈希散列中的哈希数组?

时间:2011-02-21 14:43:05

标签: arrays perl hash

我有这个HoH

#!/usr/bin/perl

use warnings;
use strict;

my $a = {
    '0' => {
            'i' => -1,
            'u'  => -1,
    },
};

但我想要的是

my $a = {
    '0' => {
            'i' => -1,
        'u'  => -1,
            (
              {
               'i' => -1,
               't' => -1,
              },
            ),
          },
        };

会出错。

是否有可能在HoH中有AoH?

2 个答案:

答案 0 :(得分:8)

这可能会让你大喊“在$ filename line $ line的匿名哈希中奇数个元素”,对吧?那是因为你不能真正将数组填充到哈希中 - 数组引用需要键入,就像任何其他哈希元素一样。此外,您需要使用[]而不是()来创建数组ref:

my $a = {
    0 => {
        i => -1,
        u => -1,
        x => [{i => -1, t => -1}],
    },
};

不会产生任何错误。然后您可以像这样访问它:$ a-> {0} {x} [0] {i};

答案 1 :(得分:2)

你的阵列前应该有一把钥匙:

my $a = {
    '0' => {
            'i' => -1,
            'u'  => -1,
            'a' => [
      # here ^ is the key
              {
               'i' => -1,
               't' => -1,
              },
            ],
          },
        };