我正在寻找一个受祝福的对象的深层(在这一点上,浅层可能就足够了)副本。
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 = { %{$Foo::FOO} }
,但这样就不再受祝福了;此外,这仅适用于简单的数据结构(现在不是问题)。是不是只能这样复制然后祝福(例如$copy = bless { %{$Foo::FOO} }, q{Foo};
)?
我试图避免使用 Moose、Clone 或其他非核心模块/包,所以在回复时请记住这一点。 加粗,使其更加突出:)