Назначение хеша хешу - PullRequest
       5

Назначение хеша хешу

1 голос
/ 14 ноября 2010

Прямо сейчас у меня есть два хэша.Я хочу назначить один весь хэш идентификатору во втором хеше.Однако у меня возникают проблемы при назначении этого хэша другому хешу.

Можете ли вы назначить хэш другому хешу, просто сказав:

$nodes{$id}=%nodeHash;

Сейчас это не работает, потому что когдаЯ говорю:

print Dumper(\%nodes);

Я получаю это в результате:

$VAR1 = {
      'c2' => '4/8',
      'c1' => {}
    };

Извините, если это не совсем понятно, я не очень опытный программист, поэтому хэш хэшейдовольно сложный.

Ответы [ 3 ]

20 голосов
/ 14 ноября 2010

Агрегаты хранят только скаляры. Поэтому используйте оператор ref, чтобы получить ссылку на хеш:

$nodes{$id} = \%node_hash;

или, иногда немного более безопасно, выделение нового и копирование старого в него, а затем возврат новой ссылки:

$nodes{$id} = { %node_hash };
8 голосов
/ 14 ноября 2010

Хеш-значение должно быть скалярным, поэтому вам необходимо присвоить хеш-ссылку:

$nodes{$id} = \%nodeHash;
5 голосов
/ 14 ноября 2010

Вы не можете использовать хеш в качестве значения, но вы можете использовать ссылку на хеш; $nodes{$id} = \%nodeHash;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...