Here's the start of one way to roll up your own plugin manager:
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;
Prints:
Hello Hi
Plenty of scope for improvement here. Having the plugins provide objects would be a big improvement in many ways for example.
In reply to Re: How do plugins work?
by GrandFather
in thread How do plugins work?
by pileofrogs
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |