NAME
    Module::List::Wildcard - A fork of Module::List that groks wildcard

VERSION
    This document describes version 0.004009 of Module::List::Wildcard (from
    Perl distribution Module-List-Wildcard), released on 2021-01-16.

SYNOPSIS
    Use like you would Module::List, e.g.:

     use Module::List::Wildcard qw(list_modules);

     $id_modules = list_modules("Data::ID::", { list_modules => 1});
     $prefixes = list_modules("", { list_prefixes => 1, recurse => 1 });

    Wildcard support:

     $modules = list_modules("Module::P*", { wildcard => 1, list_modules => 1});
     $modules = list_modules("Module::P**", { wildcard => 1, list_modules => 1});

    "all" option:

     $modules = list_modules("Module::", { list_modules => 1, all => 1});

DESCRIPTION
    This module is a fork of Module::List. It's exactly like Module::List
    0.004, except for the following differences:

    *   lower startup overhead (with some caveats)

        It strips the usage of Exporter, IO::Dir, Carp, File::Spec, with the
        goal of saving a few milliseconds (a casual test on my PC results in
        11ms vs 39ms).

        Path separator is hard-coded as "/".

    *   Recognize "wildcard" option

        This boolean option can be set to true to recognize wildcard pattern
        in prefix. Wildcard patterns such as jokers ("?", "*", "**"),
        classes ("[a-z]"), as well as braces ("{One,Two}") are supported.
        "**" implies recursive listing (sets "recurse" option to 1).

        Examples:

         list_modules("Module::P*", {wildcard=>1, list_modules=>1});

        results in something like:

         {
             "Module::Patch"             => undef,
             "Module::Path"              => undef,
             "Module::Pluggable"         => undef,
         }

        while:

         list_modules("Module::P**", {wildcard=>1, list_modules=>1});

        results in something like:

         {
             "Module::Patch"             => undef,
             "Module::Path"              => undef,
             "Module::Path::More"        => undef,
             "Module::Pluggable"         => undef,
             "Module::Pluggable::Object" => undef,
         }

        while:

         list_modules("Module::**le", {wildcard=>1, list_modules=>1});

        results in something like:

         {
             "Module::Depakable"                => undef,
             "Module::Install::Admin::Bundle"   => undef,
             "Module::Install::Admin::Makefile" => undef,
             "Module::Install::Bundle"          => undef,
             "Module::Install::Makefile"        => undef,
             "Module::Pluggable"                => undef,
         }

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Module-List-Wildcard>.

SOURCE
    Source repository is at
    <https://github.com/perlancar/perl-Module-List-Wildcard>.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://github.com/perlancar/perl-Module-List-Wildcard/issues>

    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
    Module::List

    Module::List::Tiny

    Module::List::More, from which Module::List::Wildcard is actually forked
    from. Module::List::More contains more features, including wildcard
    support. I'm currently maintainng both modules. Eventually this
    duplication might be resolved in the future.

AUTHOR
    perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2021, 2020, 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.