Хорошо, просто перехват проверки работоспособности, похоже, не работает для меня. Я не знаю, была ли версия версии perl у меня или версия overload.pm или что-то не так с тем, как я ее реализовал, но этот код не работает для меня.
perl version
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);
}
Основной
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;
Хуже всего то, что я не получаю никаких предупреждений или ошибок в журнале.
UPDATE
Спасибо Фрейдо за то, что он нашел проблему. Я обновил этот вопрос на всякий случай, если кто-то еще наткнулся на это.
Сообщается ли, что сообщество Perl/Moose не использует перегрузку?