我正在尋找做一個深奧的(在這一點上,淺可能就夠了)複製一個祝福的對象。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