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.