请问perl中如何拷贝一个对象

请问perl中如何拷贝一个对象

就是从一个对象A创建出另一个状态相同的对象B,并且以后对B对象的操作不会影响到A。
你说的"对象"是嘛?object? 那要看对应的 class 有没有相应的拷贝函数了
就是说perl不会自动生成一个默认拷贝函数了?

那么遇到一个复杂的包含了许多嵌套class组合起来的对象,那么要对它进行拷贝操作的话,我就要为其中牵涉进来的每一个class手写一个拷贝函数了。这样是不是太繁琐了。
有模块来做深拷贝这样的事情吧
我尝试在CPAN上搜了几下,如obj copy, class copy 都找不到结果,英文不太好。
必须手工实现

大骆驼 和 perlobj 都有提到

可以写一个这个样的方法

sub clone {
        my $model = shift;
        my $self = $model->new(%$model, @_);
        return $self;         # 前面被 ->new 赐福过了
}

生成的对象调用 clone方法实现 拷贝

参见 大骆驼 12.4.2 初始器