in reply to plugins revisited

You could drop that eval STRING and still keep within the bounds of strict e.g
use Module::Locate 'locate'; my @plugFuncs; for(@plugins) { require( locate $_ ) and $_->import; $_->can('init')->(); push @plugFuncs, $_->can('worker'); }
And while Module::Locate isn't necessary (although it was designed for this sort of usage), it does take out the drudgery of munging class names into file paths. You might also be interested in Simon Wistow's Module::Pluggable.
HTH

_________
broquaint