NAME Acme::CPANModules::GrepVariants - Grep-like CLI utilities available on CPAN VERSION This document describes version 0.005 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: . See also . gre from App::Gre 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 cpangrep from App::cpangrep is a CLI for web service , which is no longer operating. To grep from files on CPAN, use . 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. podgrep from pmtools greps from POD sections of Perl source. 4b. Variants: alternate source: CSV csvgrep from csvgrep csv-grep from App::CSVUtils allows you to apply Perl code against rows of CSV. 4c. Variants: alternate source: word lists wordlist from App::wordlist greps words from wordlist modules (modules that contains word lists, see WordList). 4d. Variants: other alternate sources grep-from-bash-history from App::BashHistoryUtils. grep-from-iod from App::IODUtils. grep-from-ini from App::INIUtils. grep-from-coin from App::CryptoCurrencyUtils. grep-from-exchange from App::CryptoCurrencyUtils. jgrep from App::JsonLogUtils ptargrep from Archive::Tar searches against table of contents of tar files. 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. 5b. Variants: searching dates grep-date from App::grep::date greps for dates in lines of text. dategrep from App::dategrep prints lines matching a date range. ACME::MODULES ENTRIES * PerlPowerTools * ack * App::Gre * App::abgrep * App::Greple * App::GrepUtils * App::rpgrep * Regexp::Pattern * App::pmgrep * App::cpangrep * App::Grepl * PPI * pmtools * csvgrep * App::CSVUtils * App::wordlist * App::BashHistoryUtils * App::IODUtils * App::INIUtils * App::CryptoCurrencyUtils * App::JsonLogUtils * Archive::Tar * 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 . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website 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 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.