在我的moosified TheObject包中,我尝试这样做:
around 'new' => sub {
my $orig=shift;
my $class=shift;
my $self=$class->$orig(@_);
my $shared_self : shared = shared_clone($self);
return $shared_self;
};
然后,在带有线程的代码中:
my $obj :shared =new TheObject();
然后我得到'不支持的ref类型:CODE'在这一行:
my $shared_self : shared = shared_clone($self);
我正在运行5.8.8。
perl -Mthreads -le'print $threads::VERSION'
1.74
任何人都知道这里发生了什么?
答案 0 :(得分:1)
我想我想出来了。我的对象实际上确实包含了内部的coderefs,现在我想到了 - 我怎么能在perl中深度复制coderef?
答案 1 :(得分:0)
Moose使用名为inside-out-object的perl-oo技术
如果threads-1.74 shared_clone不支持克隆这些,请尝试使用threads-1.83 / threads-shared-1.37,以及最新的Moose