#Dynamic module loader for listeners sub load_modules { my @modules_to_load = shift; my ( %modules, @module_paths ); #Change module names to paths foreach $module_name (@modules_to_load) { my $path = $module_name; $path =~ s/::/\//; push @module_paths $path; } #Construct a full path to the .pm file(s) foreach $inc_path (@INC) { foreach $module_path (@module_paths) { $full_path = $inc_path . "/" . $module_path . "/"; if ( -e $full_path ) { push @dirs $full_path }; } } #Load the modules and add their names to the hash foreach my $dir (@dirs) { foreach my $module ( glob "$dir*.pm" ) { require $module; my $module_name = fileparse( $module, ".pm" ); my $module_type = basename($dir); push @%modules{}, ( $ . "::" . $module_name ); } } #print Dumper(%INC); return \%modules; }