Хорошо, просто проверка работоспособности не работает для меня.Я не знаю, какая у меня версия 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
Token.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);
}
main
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;
Хуже всего то, что я не получаю никаких предупреждений или ошибок в журнале.
ОБНОВЛЕНИЕ
Спасибо Фрайдо за обнаружение проблемы.Я обновил вопрос на тот случай, если кто-нибудь еще наткнется на это.
Разве сообщество Perl / Moose обычно не использует перегрузку?