簡介
深度復(fù)制 Perl 中的數(shù)據(jù)結(jié)構(gòu)乘盖;
可以像下面這樣使用
use Clone 'clone';
my $data = {
set => [ 1 .. 50 ],
foo => {
answer => 42,
object => SomeObject->new,
},
};
my $cloned_data = clone($data);
$cloned_data->{foo}{answer} = 1;
print $cloned_data->{foo}{answer}; # '1'
print $data->{foo}{answer}; # '42'
也可以把它應(yīng)用到你的類中
package Foo;
use parent 'Clone';
sub new { bless {}, shift }
package main;
my $obj = Foo->new;
my $copy = $obj->clone;
詳細(xì)說明
這個模塊提供了一個 clone
方法,使用這個方法可以遞歸地復(fù)制嵌套的hash,array,scalar和reference類型的值,包括綁定的對象和變量托酸。clone()
接收一個標(biāo)量作為參數(shù),并且進(jìn)行深度復(fù)制。
my $copy = clone (\@array);
# or
my %copy = %{ clone (\%hash) };
注:它能夠正確的處理氛雪,遞歸引用(循環(huán)引用)或自引用的hash結(jié)構(gòu)。