我正在寻找做一个深奥的(在这一点上,浅可能就够了)复制一个祝福的对象。Perl:如何深层复制一个有福的对象?
Foo类
package Foo;
our $FOO = new Foo; # initial run
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
主程序
use Foo;
my $copy = $Foo::FOO; # instead of creating a ref, want to deep copy here
$copy->{bar} = 'bar';
bar
同时出现在$Foo::FOO
和$copy
。我意识到我可以通过将其设置为来创建对象的副本,但不会再被祝福;此外,这只适用于简单的数据结构(现在不是问题)。唯一的方法就是复制这种方式然后祝福(例如$copy = bless { %{$Foo::FOO} }, q{Foo};
)?
我试图避免使用驼鹿,克隆或其他非核心模块/软件包,因此请在回复时记住这一点。因此它更加突出:)
接受的解决方案可能会改变:请注意,它是更浅拷贝简单的数据结构,但不会解决深复制,甚至更先进的阶级结构;这是我原来的问题。 记住这一点,选定的答案可能会在未来发生变化。 – vol7ron 2013-05-09 15:43:53