NAME
    Acme::CPANModules::GrepVariants - Grep-like CLI utilities available on
    CPAN

VERSION
    This document describes version 0.003 of Acme::CPANModules::GrepVariants
    (from Perl distribution Acme-CPANModules-GrepVariants), released on
    2021-07-02.

DESCRIPTION
    1. Reimplementations

    grep for PerlPowerTools simply tries to reimplement grep in Perl, as
    part of the project to reimplement many Unix utilities in Perl. It has
    few practical uses.

    2a. Improvements in recursive searching against files

    ack. Created in 2005 by Andy Lester, ack is the granddaddy of grep-like
    programs that try to improve the experience of using grep to search for
    text in source code. ack skips VCS directories like ".git" or ".svn",
    and understands file types so it doesn't look into giant ".mp4"s and
    other binaries by default. ack has spurred the development of other ack
    improvements (mostly in speed aspect) like The Silver Searcher ("ag") or
    "ripgrep". "git" also now includes a "git-grep" utility. ack has a
    website: <https://beyondgrep.com>. See also <https://betterthanack.com>.

    2b. Improvements in specifying multiple patterns

    Normally with the regular grep, to search for all 'foo' and 'bar', you
    either have to do something like:

     % grep --color=always foo FILES | grep bar

    or:

     % grep -P 'foo.*bar|bar.*foo' FILES

    both of which get unwieldy if the number of patterns get higher. Or you
    can use look-ahead:

     % grep -P '(?=.*foo)(?=.*bar)' FILES

    but this does not capture (thus highlight) the patterns.

    Note that searching for multiple patterns in particular order
    ('foo.*bar'), or searching for aternates from multiple patterns
    ('foo|bar') is no problem in grep.

    Some tools have been written to make it easier to specify multiple
    patterns.

    abgrep from App::abgrep.

    greple from App::Greple. greple also has a few other tricks up its
    sleeve, like configuration file to define complex regexes, matching
    across lines, and Japanese text support.

    grep-terms from App::GrepUtils all try to make searching for multiple
    patterns in grep easier.

    3. Variants: alternate ways of specifying regex

    Instead of specifying a pattern, with App::rpgrep you can specify a
    pattern name in a Regexp::Pattern::* module instead.

    4a. Variants: alternate source: Perl source code

    pmgrep from App::pmgrep lets you grep over locally installed Perl
    modules. It's basically a shortcut for something like this:

     % pmlist -Rx | xargs grep PAT
     % grep PAT C<pmlist -Rx>

    grepl from App::Grepl uses PPI to let you grep over Perl *documents*; it
    allows you to do things like: search only in Perl code comments or
    inside string literals.

    4b. Variants: other alternate sources

    grep-from-iod from App::IODUtils.

    grep-from-ini from App::INIUtils.

    grep-from-coin from App::CryptoCurrencyUtils.

    grep-from-exchange from App::CryptoCurrencyUtils.

    5a. Variants: searching URLs

    App::grep::url greps URLs from lines of input. You don't have to
    manually specify regex that matches URLs yourself; you can just add
    additional criteria for the URLs, e.g. whether the host part must
    contain some text, or whether a certain query parameter must match some
    pattern.

ACME::MODULES ENTRIES
    *   PerlPowerTools

    *   ack

    *   App::abgrep

    *   App::Greple

    *   App::GrepUtils

    *   App::rpgrep

    *   Regexp::Pattern

    *   App::pmgrep

    *   App::Grepl

    *   PPI

    *   App::IODUtils

    *   App::INIUtils

    *   App::CryptoCurrencyUtils

    *   App::grep::url

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 GrepVariants

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

        % cpanmodules ls-entries GrepVariants | cpanm -n

    or Acme::CM::Get:

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

    or directly:

        % perl -MAcme::CPANModules::GrepVariants -E'say $_->{module} for @{ $Acme::CPANModules::GrepVariants::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.

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

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

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

    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
    Acme::CPANModules - about the Acme::CPANModules namespace

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

    Acme::CPANModules::GoodInterfaces

AUTHOR
    perlancar <perlancar@cpan.org>

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

