Data::Dumper 返回带斜线的散列

Data::Dumper returned hash with a slash

所以我有一行 perl 代码,内容如下:

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

当我在上面做 Dumper 时:

warn Dumper $stored_value

我收到了这个结果。

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

现在,我看到了这样的结果:

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

如果我想知道 foo 的值,我会输入如下内容:

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#Using-References 中看到了如何执行此操作,但我只是想对其进行一些说明。

我不确定你的问题是什么,但你的输出显示 $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 in preference to Data::Dumper

更有用