Perl получает значение хэша в хеше - PullRequest
0 голосов
/ 28 июня 2018

У меня есть хэш Perl, и я не знаю, как выглядит его содержимое.

Когда я распечатываю его ключи и значения (проверяю прикрепленное изображение хеш-цикла), я получаю значения, которые выглядят как строка, содержащая еще один хеш для каждого значения (проверяем вывод изображения петли хеш-функции).

Как распечатать ключи и значения для этих хэшей?

output of hash loop

hash loop 2

1 Ответ

0 голосов
/ 29 июня 2018

Ваш метод getVarHash() возвращает ссылку на хеш. И когда вы разыменовываете хэш и просматриваете его содержимое, вы видите, что оно содержит ссылки на другие хэши.

На самом деле, эти хэши второго уровня - это не просто ссылки на обычные хеши - это благословенные хэши. Вы можете видеть это из Variable= перед ссылкой на хеш в вашем выводе. «Благословенный хэш» - это объект. Итак, у вас есть несколько объектов «Переменной». Похоже, это не стандартный класс Perl, так что, надеюсь, у вас будет документация о том, как использовать этот класс.

Вы должны действительно относиться к объектам как к черным ящикам и использовать опубликованный интерфейс для доступа к данным внутри них. Но при необходимости вы можете обращаться с ними как с обычными хеш-ссылками.

Самый простой способ увидеть, что находится в такой сложной структуре данных, это использовать что-то вроде Data :: Dumper для отображения структуры.

use feature 'say';
use Data::Dumper;

say Dumper $vars->getVarHash();

Perl имеет много хорошей документации о том, как понимать сложные структуры данных и манипулировать ими. Я рекомендую взглянуть на Поваренная книга структур данных .

...