#!/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' );
如何理解这些信息?我们从输出中获得了什么?
答案 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'
};