2

所以我有一行 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';

本来,我通过谷歌搜索找不到任何东西,但刚才,我做了一个小测试脚本来玩我看到的东西,我发现了这个

#!/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中看到了如何做到这一点,但我只是想澄清一下。

4

1 回答 1

4

我不确定您的问题是什么,但您的输出显示这$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

于 2015-04-22T14:25:30.803 回答