如何理解Data :: Dumper的输出?

时间:2013-04-19 09:44:32

标签: perl

#!/usr/bin/perl
use Data::Dumper;
use Tk;
use strict;
use warnings;
my $name='test';
my $s_ref=\$name;
bless $s_ref, 'Tk';
print Dumper \$s_ref;

输出信息为:

$VAR1 = \bless( do{\(my $o = 'test')}, 'Tk' );

如何理解这些信息?我们从输出中获得了什么?

2 个答案:

答案 0 :(得分:2)

Data :: Dumper需要获取对字符串的引用而不在当前作用域中创建新变量,这可能是它如何做到的。从中间向外工作,我们my $o = 'test'声明$o,将其值设置为'test'并返回$o。在这种情况下,do{}块提供了my绑定存在的范围,当块退出$o不再存在但它引用的值继续存在时,这很好,因为在do块开头的\引用它的返回值。然后,对'test'字符串'Tk'的引用受到祝福。

答案 1 :(得分:0)

通常,Data :: Dumper用于检查变量的内容,如Hash或Array。 在您的情况下,您正在尝试转储类对象引用。

例如看下面的代码和输出,$ VAR1显示$ var的内容,即关联数组(HASH)

代码:

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


my $var = {a => 'One', b => 'Two', c => [1,2,3]};

print Dumper $var;

输出:

$VAR1 = {
  'c' => [
           1,
           2,
           3
         ],
  'a' => 'One',
  'b' => 'Two'
};