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

Module::Load::In::INIT - Load modules in INIT phase

VERSION

This document describes version 0.005 of Module::Load::In::INIT (from Perl distribution Module-Load-In-INIT), released on 2018-02-18.

SYNOPSIS

In the command-line:

 % perl -MModule::Load::In::INIT=Mod::One,Mod::Two='Some;Import;Args' somescript.pl

Mod::One and Mod::Two will be loaded in the INIT phase instead of BEGIN phase.

Specify options for Module::Load::In::INIT itself:

 % perl -MModule::Load::In::INIT=-ignore_load_error,Mod::One,Mod::Two

DESCRIPTION

This module can load (or perhaps defer loading) modules in the INIT phase instead of the BEGIN phase. One use-case where it is useful: monkey-patching a module (using a Module::Patch-based module) in a fatpacked script (see Module::FatPack or App::FatPacker), e.g.:

 % perl -MSome::Module::Patch::Foo fatpacked-script.pl

Some::Module::Patch::Foo will try to load Some::Module then patch it. This might fail when module is loaded by the fatpack handler (which is a require hook) as by the time Some::Module::Patch::Foo is loaded, the fatpack handler has not been setup yet, and Some::Module is not available elsewhere (on the filesystem). This, however, works:

 % perl -MModule::Load::In::INIT=Some::Module::Patch::Foo fatpacked-script.pl

Loading of Some::Module::Patch::Foo (and by extension, Some::Module) is deferred to the INIT phase. By that time, the fatpack require hook has been setup and Some::Module can be (or might already be) loaded by it.

Caveat: Module::Load::In::INIT itself must be loaded in the BEGIN phase, or INIT phase at the latest.

OPTIONS

You can specify options for Module::Load::In::INIT itself via import argument that starts with dash ("-"). Known options:

-ignore_load_error

If set, then require() error will be ignored.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Module-Load-In-INIT.

SOURCE

Source repository is at https://github.com/perlancar/perl-Module-Load-In-INIT.

BUGS

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

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) 2018, 2017 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.