Files:
## t/AvailCheck.t use Test::More tests => 2; BEGIN { use_ok('AvailCheck') }; use Data::Dumper; my $opt = [ {service => 'ping', server=>'server1'}, {service => 'telnet', server=>'server1'}, {service => 'telnet', server=>'server2'}, {service => 'ping', server=>'server2'}, ]; use Check; my $check_factory = Check->new; my $check = $check_factory->get_check_object('ping'); isa_ok($check, 'Check::Ping', 'returned Object Check::Ping'); $check->servername('server1'); $check->check;
## lib/Check.pm package Check; use Moose; use Data::Dumper; has 'servername' => (is => 'rw', isa => 'Str'); my $check_factory = { 'ping' => 'Check::Ping', 'telnet' => 'Check::Telnet', }; sub get_check_object { my $self = shift; my $classname = shift; my $class = $check_factory->{$classname}; eval "require $class"; return $class->new; } 1;
## Check/Ping.pm package Check::Ping; use Moose; extends 'Check'; sub check { my $self = shift; print "Ping"; } 1;
## Check/Telnet.pm package Check::Telnet; use Moose; extends 'Check'; sub check { my $self = shift; print "Telnet\n"; } 1;