The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.