use strict; use warnings; my %plugins; opendir DIR, "."; # Search for plugins while ($_ = readdir DIR) { next unless m|(plugin_[^\\/]+)\.pm$|; next unless -f $_; my $plugin = $1; next unless require "$plugin.pm"; $plugins{$plugin} = "${plugin}::"; } closedir DIR; # Run the 'run' sub from each plugin found for (keys %plugins) { no strict "refs"; "$plugins{$_}run"->(); } -------- 8< ----------- # plugin_hi.pm use strict; use warnings; package plugin_hi; sub run { print "Hi\n"; } 1; -------- 8< ----------- # plugin_hello.pm use strict; use warnings; package plugin_hello; sub run { print "Hello\n"; } 1;