#!/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' );
如何理解这些信息?我们从输出中得到什么?
#!/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' );
如何理解这些信息?我们从输出中得到什么?
Data::Dumper 需要获取对字符串的引用,而无需在当前范围内创建新变量,这大概就是它的做法。从中间向外工作,我们有my $o = 'test'声明$o,设置它的值'test'并返回$o。在这种情况下,do{}块提供了my绑定存在的范围,当块退出$o时不再存在但它引用的值继续存在,这很好,因为\在 do 块的开头引用了它的返回值。然后对字符串的引用'test'带有'Tk'.
通常 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'
};