Я все еще в процессе изучения основных принципов OO Perl. Я создал пакет BigBrother.pm с базовым конструктором.Не удается найти метод объекта
package BigBrother;
use strict;
use warnings;
sub new {
my ($class, $args) = @_;
my $self = {
datacenter => $args->{datacenter},
testname => $args->{testname},
hostname => $args->{hostname},
ipaddress => $args->{ipaddress},
eventtime => $args->{eventtime},
responsetime => $args->{responsetime},
error => $args->{error} || ''
};
return bless $self, $class;
}
Я также создал два метода: один, который записывает время до начала события, а другие, чтобы записать время, когда событие остановилось.
sub setTimer {
my $self = shift;
my $start = `date +%s.%N`;
$self->{startTimer} = $start->startTimer;
}
sub endTimer {
my $self = shift;
my $end = `date +%s.%N`;
return $self->{endTimer} = $end->endTimer;
}
1;
В моем PERL исполняемый сценарий, я следующее:
#!/usr/bin/perl -w
use warnings;
use strict;
use Xymon::Plugin::Server::Hosts;
use lib "/usr/lib/xymon/server/ext";
use BigBrother;
BEGIN {
$ENV{LD_LIBRARY_PATH}= "/usr/lib/xymon/server/ext/";
}
my $bigbro = new BigBrother;
my $ret = $bigbro->setTimer;
Но я получаю следующее сообщение об ошибке при запуске сценария:
# ./a.pl
Can't locate object method "startTimer" via package "1422368625.492495754
" (perhaps you forgot to load "1422368625.492495754
"?) at /usr/lib/xymon/server/ext/BigBrother.pm line 22.
Это строка 22 от BigBrother.pm
sub setTimer {
20 my $self = shift;
21 my $start = `date +%s.%N`;
22 $self->{startTimer} = $start->startTimer;
23 }
24
25 sub endTimer {
26 my $self = shift;
27 my $end = `date +%s.%N`;
28 $self->{endTimer} = $end->endTimer;
29 }
Очевидно, что я что-то упускаю. Может кто-то прояснить?