NAME

preloadable - Require a module during run-time (or compile-time)

VERSION

This document describes version 0.001 of preloadable (from Perl distribution preloadable), released on 2019-03-19.

SYNOPSIS

In your script:

 use preloadable 'Foo';

 sub baz {
     use preloadable 'Bar';
     Bar::blah(1, 2);
 }
 baz;

If the environment PERL_PRELOAD_MODULES is false or not defined, the above script is equivalent to:

 require Foo;
 sub baz {
     require Bar;
     Bar::blah(1, 2);
 }
 baz;

But if PERL_PRELOAD_MODULES is true, the above script is equivalent to:

 BEGIN { require Foo }
 sub baz {
     BEGIN { require Bar }
     Bar::blah(1, 2);
 }
 baz;

which means Foo and Bar are loaded during compile-time.

DESCRIPTION

With PERL_PRELOAD_MODULES unset or false, this statement:

 use preloadable 'Foo';

is basically equivalent to run-time require():

 require Foo;

preloadable uses B::Hooks::AtRuntime to perform the require() on runtime. During runtime, you do take a hit of an extra subroutine call.

With PERL_PRELOAD_MODULES set to true, this statement:

 use preloadable 'Foo';

will simply instruct preloadable to require Foo at compile-time.

NOTES

B::Hooks::AtRuntime's startup overhead is a bit heavier than I'd like. Will probably fork to create a lite alternative.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/preloadable.

SOURCE

Source repository is at https://github.com/perlancar/perl-preloadable.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=preloadable

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.