NAME

preload - Load and preload modules

VERSION

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

SYNOPSIS

use preload;

# Foo::Bar will be require'd when $ENV{PERL_PRELOAD_MODULES} is true
preload Foo::Bar;

sub mysub {
    # Foo::Bar will be require'd when $ENV{PERL_PRELOAD_MODULES} is false
    load Foo::Bar;
}

DESCRIPTION

STATUS: Experimental, interface will likely change.

When running a script, especially one that has to start quickly, it's desirable to delay loading modules until it's actually used, to reduce startup overhead.

When running a (preforking) daemon, it's usually desirable to preload modules at startup, so the daemon can then service clients without any further delay from loading modules, and the loading before forking means child processes can share the module code (reduced memory usage).

This pragma module tries to offer the best of both worlds. This statement:

use preload;

will declare a constant PRELOAD (currently set to $ENV{PERL_PRELOAD_MODULES}) and introduce two new keywords: preload and load. preload is defined to be:

if (PRELOAD) { require $module }

this means it will become a no-op when PRELOAD is false. On the other hand, load is defined to be:

unless (PRELOAD) { require $module }

this means it will become a no-op when PRELOAD is true.

With this module you can avoid run-time penalty associated with conditional loading.

ENVIRONMENT

PERL_PRELOAD_MODULES

Boolean.

HOMEPAGE

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

SOURCE

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

BUGS

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

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.

SEE ALSO

prefork

Dist::Zilla::Plugin::Preload

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019, 2015 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.