Module::Lazy - postpone module loading until actually used
This module is designed to improve load times for applications with huge dependency footprint. It is somewhat similar to autouse, but more focused on object-oriented modules. See:
use Module::Lazy 'My::Module';
This creates a fake package My::Module with
my $object = My::Module->new; my $value = My::Module::some_function();
Either of these triggers loading My::Module in full.
Preload all lazy methods right away, forbid further lazy-loading. This may be useful for long-running, mission-critical apps.
use Module::Lazy; Module::Lazu->unimport();
Ditto, but at runtime (say after parsing command-line parameters and before daemonizing).
Sure, there are some caveats with using it, but maybe it's still helpful for your project. We managed to reduce test suite execution time from ~17 to ~9 minutes with this one.