Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
package Foo;
use Moose;
has errstr => ( is=>'ro', isa => 'Str', lazy => 1, ); # правильнее будет вынести это в роль, но для сокращения кода оставлю так
sub BUILD {
my $self = shift;
my $obj = eval { $self->SUPER::BUILD(@_) };
$self->errstr($@) if $@;
$obj
}
sub BUILD {
my $self = shift;
# some checks
unless($success) {
$self->errstr('bla')
}
}
# ...
my $foo = Foo->new;
die $foo->errstr if $foo->has_errstr;
sub create_request { # это наследуется
my $self = shift;
my $xml = $self->_get_request_xml;
$xml->appendChild(....);
....
}
sub _getRequest_xml { # а это переопределяется в дочернем классе
.....
return $xml
}
Moose(X). Продолжение