Хочу переопределить метод send класса Zabbix::Sender (наследующего Moose::Object'у). Делаю так, и оно так работает:
#!/usr/bin/perl
package Zabbix::Sender::Clever;
use 5.16.1;
use Moose;
extends 'Zabbix::Sender';
has 'debug' => (
'is' => 'rw',
'isa' => 'Bool',
'default' => 0,
);
has 'dryrun' => (
'is' => 'rw',
'isa' => 'Bool',
'default' => 0,
);
sub send {
my $self=shift;
my $item={'key'=>$_[0],'val'=>$_[1]};
printf STDERR "Feeding item <<%s>> on host <<%s>> with value <<%s>>\n", $item->{'key'}, $self->hostname, $item->{'val'} if $self->debug;
unless ($self->dryrun) {
Zabbix::Sender::send($self, @_);
say 'INFO: '.$self->_info;
}
}
package main;
my $z=Zabbix::Sender::Clever->new('server'=>'localhost');
$z->dryrun(0);
$z->debug(1);
$z->send('item.key','hello');
Но... Сугубо ИМХО это как-то немного уродливо смотрится вызов метода родителя «Zabbix::Sender::send($self, @_);». В конце-концов внутри меодов наследующего я хотя могу забыть о конкретном имени класса родителя и написать хотя бы просто __PARENT__::send($self) ?
А в идеале хотелось бы чего-то вроде $self->PARENT->send();
Есть ли такие красивости в Moose? Что-то не нашёл...