如何让'='在Perl中调用复制构造函数?

时间:2016-03-24 18:30:39

标签: perl reference operator-overloading copy-constructor

我知道'='不能在Perl中直接重载,但我希望能够使用'='为我的一个对象调用复制构造函数。

示例:

my $object1 = Object->new('value' => 1);

# I want this to invoke the copy constructor of "$object1" instead of copying a reference
my $object2 = $object1;

# This should not modify "$object1"
$object2->set_value(12);

print $object1->get_value()."\n";
print $object2->get_value()."\n";

我希望输出为:

1
12

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

要克隆数据,您可以使用Clone模块。

示例:

package Foo;
use parent 'Clone';
sub new { bless {}, shift }

package main;

my $obj = Foo->new;
my $copy = $obj->clone;