Кроме добавления черты dirty
, как указано @oylenshpeegul, вы также можете удалить coderef, вызывающий реальную функцию, передав ее имя в виде строки и удалив () из объявления метода.Проще показать, чем сказать.
#!/usr/bin/env perl
use Test::More tests=>1;
use MooseX::Declare;
class C is dirty {
use overload '""' => 'to_string';
method to_string { sprintf "#<%s data='%s'>", $self->meta->name, $self->data }
has data => (is=>'rw',default=>'');
}
is(C->new(data=>'hello'), "#<C data='hello'>");