我尝试了几个小时将子数组存储到对象中并失败了。也许有人可以告诉我如何使用perl存储深层副本。 sry我不知道这个问题是否清楚,但应该很容易解决......
这里的例子。
这里是对象类
package obj;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
sub new(\@){
my $class=shift;
my $this={};
$this->{"array"}=shift;
return bless($this,$class);
}
sub getArray(){
my $this=shift;
return $this->{"array"};
}
和测试类
use strict;
use warnings;
use obj;
my @a=(1,2);
push @a,3;
my $ob=obj->new(\@a);
@a=();
print @{$ob->getArray()};
这什么都不返回 - 不会取消引用数组?
那怎么办呢?
THX
答案 0 :(得分:0)
尊重什么阵列?转换中涉及的唯一数组是@_
? $_[0]
是标量,而不是数组。
(浅)阵列复制使用:
完成@dst = @src;
所以你想要
@{ $this->{"array"} } = @{ shift };
如果您真的想要深层复制(尽管在您的示例中不需要它),请使用
use Storable qw( dclone );
$this->{"array"} = dclone(shift);