Perl 模块 Clone
2017-03-21 本文已影响24人
JSON_NULL
简介
深度复制 Perl 中的数据结构;
可以像下面这样使用
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'
也可以把它应用到你的类中
package Foo;
use parent 'Clone';
sub new { bless {}, shift }
package main;
my $obj = Foo->new;
my $copy = $obj->clone;
详细说明
这个模块提供了一个 clone
方法,使用这个方法可以递归地复制嵌套的hash,array,scalar和reference类型的值,包括绑定的对象和变量。clone()
接收一个标量作为参数,并且进行深度复制。
my $copy = clone (\@array);
# or
my %copy = %{ clone (\%hash) };
注:它能够正确的处理,递归引用(循环引用)或自引用的hash结构。