Массив хэшей в хэш хэшей? - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть этот 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,
              },
            ),
          },
        };

выдавал ошибку.

Разве это невозможно при наличии AoHв хох?

Ответы [ 2 ]

8 голосов
/ 21 февраля 2011

Вероятно, вы кричите «Нечетное количество элементов в анонимном хеше в $ filename line $ line», верно? Это потому, что вы не можете просто вставить массив в хеш самостоятельно - необходимо указать ключ ref, как и любой другой элемент хеша. Также вам нужно будет использовать [] вместо () для создания массива ref:

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

не выдает ошибок. Затем вы можете получить к нему доступ так: $ a -> {0} {x} [0] {i};

2 голосов
/ 21 февраля 2011

Перед вашим массивом должен быть ключ:

my $a = {
    '0' => {
            'i' => -1,
            'u'  => -1,
            'a' => [
      # here ^ is the key
              {
               'i' => -1,
               't' => -1,
              },
            ],
          },
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...