Почему Data :: Dumper показывает значения, которые ссылаются на другие значения? - PullRequest
0 голосов
/ 30 октября 2019

Используя Data Dumper после анализа некоторых данных JSON, я получил что-то вроде этого:

$VAR1 = {
   param1 => 'foo',
   param2 => $VAR1->{param1}
};

Я правильно понял, что param2 связан со значением param1?

Что такоеэто называется? Динамический хеш?

Заранее спасибо, Стив

1 Ответ

1 голос
/ 30 октября 2019

Не нужно путать, значение param2 - это просто ссылка, с которой мы уже сталкивались в структуре, поэтому Data :: Dumper по умолчанию показывает его как ссылку. Вы можете установить $Data::Dumper::Deepcopy = 1; и заставить Data :: Dumper печатать действительные значения вместо этого, если вам это нужно для чего-то. Например,

my $foo = 'foo';

my $test = {
   param1 => \$foo,
   param2 => \$foo
};

print Dumper($test);

выведет на печать

$VAR1 = {
          'param2' => \'foo',
          'param1' => $VAR1->{'param2'}
        };

Но если вы начнете с чего-то вроде:

use Data::Dumper;
$Data::Dumper::Deepcopy = 1;

Ваш вывод будет:

$VAR1 = {
          'param1' => \'foo',
          'param2' => \'foo'
        };

Поведение по умолчанию более полезно для визуального осмотра.

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