{%{$self->param}}
它做哈希扩展,然后创建另一个哈希引用.
但是,{${$self> param}}与$self> param相同吗?为什么代码打扰了伎俩?
use Data::Dumper; my $foo = { a => 1,ar => [1] }; my $bar = {%$foo}; $bar->{b} = 2; push @{$bar->{ar}},4; print Dumper $foo; print Dumper $bar;
它打印
$VAR1 = { 'a' => 1,'ar' => [ 1,4 ] }; $VAR1 = { 'a' => 1,'b' => 2,4 ] };
所以你可以看到副本很浅:即使它们是引用也可以复制标量.引用的对象是相同的(在这个例子中是由ar引用的数组).