Не нужно путать, значение 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'
};
Поведение по умолчанию более полезно для визуального осмотра.