【发布时间】:2012-04-20 18:03:43
【问题描述】:
好吧,只是为了理智检查过载似乎对我不起作用。我不知道是我的perl版本,还是overload.pm的版本,还是我实现它的方式有问题,但是这段代码对我不起作用。
perl 版本
This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi
重载版本
perl -Moverload -e 'print "$overload::VERSION\n";'
1.07
令牌.pm
package Token;
use namespace::autoclean;
use Data::Dumper;
use Moose;
use Moose::Util::TypeConstraints;
use overload '+' => \&_overload_add, fallback => 1;
has 'secretvalue' => ( is => 'rw', isa => 'Int');
sub _overload_add{
my ( $one, $two ) = @_;
my $value = $one->secretvalue() + $two->secretvalue();
return ($value);
}
主要
use strict;
use warnings;
use Token;
my $t = Token->new( secretvalue => 17, key => 'x' );
my $t2 = Token->new( secretvalue => 12, key => 'y' );
my $x = $t + $t2;
print $x;
打印
$VAR1 = 12900840;
最糟糕的是,我在日志中没有收到任何警告或错误。
更新
感谢 Freido 发现问题。我已经更新了这个问题,以防其他人偶然发现这个问题。
Perl/Moose 社区一般不使用重载吗?
【问题讨论】:
标签: perl namespaces overloading moose