码神之路:Perl篇程序员Perl小推车

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结构。

上一篇下一篇

猜你喜欢

热点阅读