Изучение Perl Я только недавно обнаружил чудеса Moose!
Я пытаюсь обернуть голову вокруг модификаторов - или, по крайней мере, как обрабатываются возвращаемые значения ... они хранятся где-то?
{package Util::Printable;
use Moose::Role;
requires 'to_str','init';
before 'to_str' => sub {
my($self) = @_;
$self->{to_string} = "my string thing";
return $self->{to_string};
};
after 'init' => sub{
my($self) = @_;
$self->{roles} = __PACKAGE__;
$self->{is_printable} = 1;
};
}
1;
__END__
Использование роли для печати
{package MonkeyPrint;
use Moose;
with 'Util::Printable';
sub init{
my($self) = @_;
return 1;
};
sub BUILD{
my($self) = @_;
$self->init();
}
# ------------------------------------------------------------------------ #
# Printable Support
# ------------------------------------------------------------------------ #
use overload '""' => 'to_str';
sub to_str {
my($self) = @_;
$self->{to_string} = __PACKAGE__;
return $self->{to_string};
};
__PACKAGE__->meta->make_immutable;
}
1;
__END__