From 90e682008264320189a7f0c8bf65f91c9f22b24e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 2 Jun 2011 09:14:07 +0000 Subject: Added module load error handling --- lib/PerlDaemon/RunModules.pm | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lib/PerlDaemon/RunModules.pm') diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm index fe3d9ac..b57dc61 100644 --- a/lib/PerlDaemon/RunModules.pm +++ b/lib/PerlDaemon/RunModules.pm @@ -16,16 +16,24 @@ sub new ($$) { $logger->logmsg("Loading modules from $modulesdir"); for my $module (<$modulesdir/*.pm>) { $logger->logmsg("Loading $module"); - require $module; + eval "require '$module'"; + $logger->warn("Could not load module source file $module: $@") + if defined $@ and length $@; } for my $name (grep /PerlDaemonModules/, keys %INC) { $name =~ s#.*(PerlDaemonModules)/(.*)\.pm$#$1::$2#; - $logger->logmsg("Creating module instance of $name"); - # TODO: Add eval catching jost un case for errors - $loadedmodules{$name} = eval "${name}->new(\$conf)"; - $scheduler{$name}{lastrun} = [0,0]; - $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'}; + my $module = eval "${name}->new(\$conf)"; + + if (defined $@ and length $@) { + $logger->warn("Could not create module instance $name: $@"); + + } else { + $loadedmodules{$name} = $module; + $scheduler{$name}{lastrun} = [0,0]; + $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'}; + $logger->logmsg("Created module instance $name"); + } } } else { -- cgit v1.2.3