#!/path/to/perl use strict; my $obj = {}; # For this example bless($obj, 'main'); # get some data via config and then my $status = $obj->loadPerlModule($configData); # Prints no warnings or errors under strict.. foreach my $module ( keys %$status ) { print "$module status: $status->{$module}\n"; } # This fails.. my $now = [gettimeofday]; sleep 2; # The below produces Elapsed: 0, print "Elapsed: ", tv_interval($now, [gettimeofday]), "\n"; # This succeeds my $newNow = [gettimeofday()]; sleep 2; # The below produces Elapsed: 2.02313, print "Elapsed: ", tv_interval($now, [gettimeofday()]), "\n"; # This is the actual method that loads the module. sub loadPerlModule { my $self = shift; my $modules = $self->asHash(@_); my $return = {}; foreach my $module ( keys %$modules ) { if ( $modules->{ $module } ne '1' ) { eval "use $module " . 'qw(' . $modules->{$module} . ');'; } else { eval "use $module"; } $return->{ $module } = ( $@ ) ? "Failed to use module: $@" : "Module loaded"; $@ = undef; } # END foreach my $module return $return; } # END sub loadPerlModule