Почему «использовать перегрузку» не работает с «use namespace: autoclean»?

Хорошо, просто для проверки работоспособности перегрузка не кажется работает на меня. Я не знаю, какая у меня версия perl, или версия overload.pm, или что-то не так с тем, как я ее реализовал, но этот код у меня не работает.

perl version

This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi

overload version

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;

Хуже всего то, что я не получаю никаких предупреждений или ошибок в журнале.

ОБНОВЛЕНИЕ

Спасибо Freido за обнаружение проблемы. Я обновил вопрос на случай, если кто-то еще наткнется на это.

Сообщество Perl / Moose обычно не использует перегрузку?

12
задан qodeninja 12 October 2011 в 05:13
поделиться