NAME
    Acme::CPANModules::LoadingModules - List of modules to load other Perl
    modules

VERSION
    This document describes version 0.001 of
    Acme::CPANModules::LoadingModules (from Perl distribution
    Acme-CPANModules-LoadingModules), released on 2023-11-20.

DESCRIPTION
    Basics

    Module::Load is basically just a thin wrapper over Perl's builtin
    require() to translate between module name and path name, since the
    traditional behavior of require() is to expect module name in bareword
    form but path name in string form. This confusion will likely be fixed
    in future perl versions. For example, see PPC 0006 [1].

    [1] <https://github.com/Perl/PPCs/blob/main/ppcs/ppc0006-load-module.md>

    Installing modules automatically on demand

    Since Perl provides require hooks, one can trap the module loading
    process and check for an uninstalled module and attempt to install it
    automatically on demand when a code wants to load that module. Probably
    not suitable for use in production. See separate list:
    Acme::CPANModule::ModuleAutoinstallers.

    Loading module on demand

    Aside from require hook, Perl also provides the AUTOLOAD mechanism (see
    "perlsub" documentation for more details). This lets you catch unknown
    function being called and lets you attempt to load a module that might
    provide that function. It is not exactly "loading modules on demand" but
    close enough for a lot of cases. See separate list:
    Acme::CPANModule::ModuleAutoloaders.

    Loading multiple modules at once

    all requires all packages under a namespace. It will search the
    filesystem for installed module source files under a specified namespace
    and load them all.

    lib::require::all loads all modules in a directory.

    Logging module loading

    Require::HookChain::log::logger

    Require::HookChain::log::stderr

    Preventing loading certain modules

    lib::filter, lib::disallow

    Require hook frameworks

    These frameworks let you create require hook more easily.

    Require::Hook

    Require::Hook::More

    Require::HookChain

    Specifying relative paths

    lib::relative

ACME::CPANMODULES ENTRIES
    Module::Load
        Author: BINGOS <https://metacpan.org/author/BINGOS>

    Acme::CPANModule::ModuleAutoinstallers
    Acme::CPANModule::ModuleAutoloaders
    all Author: DEXTER <https://metacpan.org/author/DEXTER>

    lib::require::all
        Author: MIYAGAWA <https://metacpan.org/author/MIYAGAWA>

    Require::HookChain::log::logger
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    Require::HookChain::log::stderr
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    lib::filter
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    lib::disallow
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    Require::Hook
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    Require::Hook::More
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    Require::HookChain
        Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>

    lib::relative
        Author: DBOOK <https://metacpan.org/author/DBOOK>

FAQ
  What is an Acme::CPANModules::* module?
    An Acme::CPANModules::* module, like this module, contains just a list
    of module names that share a common characteristics. It is a way to
    categorize modules and document CPAN. See Acme::CPANModules for more
    details.

  What are ways to use this Acme::CPANModules module?
    Aside from reading this Acme::CPANModules module's POD documentation,
    you can install all the listed modules (entries) using cpanm-cpanmodules
    script (from App::cpanm::cpanmodules distribution):

     % cpanm-cpanmodules -n LoadingModules

    Alternatively you can use the cpanmodules CLI (from App::cpanmodules
    distribution):

        % cpanmodules ls-entries LoadingModules | cpanm -n

    or Acme::CM::Get:

        % perl -MAcme::CM::Get=LoadingModules -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n

    or directly:

        % perl -MAcme::CPANModules::LoadingModules -E'say $_->{module} for @{ $Acme::CPANModules::LoadingModules::LIST->{entries} }' | cpanm -n

    This Acme::CPANModules module also helps lcpan produce a more meaningful
    result for "lcpan related-mods" command when it comes to finding related
    modules for the modules listed in this Acme::CPANModules module. See
    App::lcpan::Cmd::related_mods for more details on how "related modules"
    are found.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Acme-CPANModules-LoadingModules>.

SOURCE
    Source repository is at
    <https://github.com/perlancar/perl-Acme-CPANModules-LoadingModules>.

SEE ALSO
    Acme::CPANModules::ModuleAutoinstallers

    Acme::CPANModules::ModuleAutoloaders

    Acme::CPANModules - about the Acme::CPANModules namespace

    cpanmodules - CLI tool to let you browse/view the lists

AUTHOR
    perlancar <perlancar@cpan.org>

CONTRIBUTING
    To contribute, you can send patches by email/via RT, or send pull
    requests on GitHub.

    Most of the time, you don't need to build the distribution yourself. You
    can simply modify the code, then test via:

     % prove -l

    If you want to build the distribution (e.g. to try to install it locally
    on your system), you can install Dist::Zilla,
    Dist::Zilla::PluginBundle::Author::PERLANCAR,
    Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two
    other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps
    required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE
    This software is copyright (c) 2023 by perlancar <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.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Acme-CPANModules-Load
    ingModules>

    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.

