Data::Dumper вернул хеш с косой чертой

Итак, у меня есть строка кода на Perl, которая выглядит так:

my $stored_value = $foo->some_function($argument);

Когда я делаю самосвал на нем:

warn Dumper $stored_value

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

$VAR1 = \{
             'foo' => 'abc',
             'bar' => '123'
};

Теперь я видел такие результаты:

warn Dumper $another_hash;
$VAR1 = {
      'foo' => 'bar',
      'baz' => 'quux'
    };

И если бы я хотел сказать, foo value, я бы напечатал что-то вроде этого:

warn Dumper $another_hash->{'foo'};

Чтобы получить это в результате.

$VAR1 = 'bar';

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

#!/usr/bin/perl
#
use strict;
use warnings;
use Data::Dumper;

sub test {
my $brother = {'Ted'};
$brother->{'Ted'} = 'brother';
return \$brother;
}

my $blah= test();
my $blah = ${$blah};
print Dumper $blah->{'Ted'};
print "\n";

Вот мои результаты:

$VAR1 = 'brother';

Я хотел поделиться тем, что нашел, если кто-то столкнулся с тем же, но что именно я увидел?

Я видел, как это сделать, в http://perldoc.perl.org/perlref.html, но я просто хотел кое-что прояснить.

1 ответ

Решение

Я не уверен, что ваш вопрос, но ваш вывод показывает, что $stored_value является ссылкой на скаляр, который, в свою очередь, является ссылкой на хеш.

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

Эта короткая программа показывает, как можно было создать значение

use strict;
use warnings;

use Data::Dumper;

my $href = {
  foo => 'abc',
  bar => '123',
};

my $href_ref = \$href;

print Dumper $href_ref;

выход

$VAR1 = \{
            'bar' => '123',
            'foo' => 'abc'
          };

И, кстати, это обычно более полезно для использования Data::Dump в предпочтении Data::Dumper

Другие вопросы по тегам