view release on metacpan or search on metacpan
lib/Acme/CPANModules/CLI/Sort.pm view on Meta::CPAN
summary => 'Sort XML "records"',
module => 'Unicode::Tussle',
script => 'xmlsort',
},
{
summary => 'Topological sort',
module => 'PerlPowerTools',
script => 'tsort',
},
{
summary => 'Another topological sort script',
module => 'App::toposort',
script => 'toposort',
},
{
summary => 'Sort lines of text (Perl port of the sort Unix command)',
lib/Acme/CPANModules/CLI/Sort.pm view on Meta::CPAN
Author: L<BDFOY|https://metacpan.org/author/BDFOY>
Script: L<xmlsort>
=item * L<PerlPowerTools> - Topological sort
Author: L<BDFOY|https://metacpan.org/author/BDFOY>
Script: L<tsort>
=item * L<App::toposort> - Another topological sort script
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
Script: L<toposort>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/CPANAuthors.pm view on Meta::CPAN
our $LIST = {
summary => 'List of Acme::CPANAUthors::* modules',
description => <<'_',
This list tries to catalog and categorize all the existing Acme::CPANAuthors::*
modules.
## Geographical
* <pm:Acme::CPANAuthors::Australian>
lib/Acme/CPANModules/CPANAuthors.pm view on Meta::CPAN
This document describes version 0.001 of Acme::CPANModules::CPANAuthors (from Perl distribution Acme-CPANModules-CPANAuthors), released on 2023-11-28.
=head1 DESCRIPTION
This list tries to catalog and categorize all the existing Acme::CPANAuthors::*
modules.
=head2 Geographical
=over
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules_ScenarioR/CalculatingDayOfWeek.pm view on Meta::CPAN
## no critic
package Acme::CPANModules_ScenarioR::CalculatingDayOfWeek;
our $VERSION = 0.002; # VERSION
our $results = [[200,"OK",[{_name=>"participant=DateTime",_succinct_name=>"D",errors=>3.8e-08,participant=>"DateTime",pct_faster_vs_slowest=>0,pct_slower_vs_fastest=>80.570996978852,rate=>37000,samples=>24,time=>27},{_name=>"participant=Date::DayOfWe...
1;
# ABSTRACT: List of modules to calculate day of week
=head1 DESCRIPTION
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/DataStructureWalker.pm view on Meta::CPAN
our $LIST = {
summary => "List of modules that traverse your data structure",
description => <<'_',
This list catalogs modules that let you traverse your data structure by visiting
each node/item: each element of an array, each key/value pair of a hash,
recursively. Sort of like <pm:File::Find> for your data instead of filesystem.
These modules can be used for searching or modifying your data.
Many modules in this list mimic Perl's `map` interface, for example:
lib/Acme/CPANModules/DataStructureWalker.pm view on Meta::CPAN
This document describes version 0.003 of Acme::CPANModules::DataStructureWalker (from Perl distribution Acme-CPANModules-DataStructureWalker), released on 2023-10-29.
=head1 DESCRIPTION
This list catalogs modules that let you traverse your data structure by visiting
each node/item: each element of an array, each key/value pair of a hash,
recursively. Sort of like L<File::Find> for your data instead of filesystem.
These modules can be used for searching or modifying your data.
Many modules in this list mimic Perl's C<map> interface, for example:
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/DumpingDataForDebugging.pm view on Meta::CPAN
our $LIST = {
summary => 'List of modules and tips when dumping data structures for debugging',
description => <<'_',
This list catalogs some of the modules you can you to dump your data structures
for debugging purposes, so the modules will be judged mostly by the
appropriateness of its output for human viewing (instead of other criteria like
speed, footprint, etc).
_
lib/Acme/CPANModules/DumpingDataForDebugging.pm view on Meta::CPAN
This document describes version 0.002 of Acme::CPANModules::DumpingDataForDebugging (from Perl distribution Acme-CPANModules-DumpingDataForDebugging), released on 2023-10-29.
=head1 DESCRIPTION
This list catalogs some of the modules you can you to dump your data structures
for debugging purposes, so the modules will be judged mostly by the
appropriateness of its output for human viewing (instead of other criteria like
speed, footprint, etc).
=head1 ACME::CPANMODULES ENTRIES
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Foozilla.pm view on Meta::CPAN
but as you know Bugzilla itself is also written in Perl.
**Filezilla**
I can only find the following modules related to this popular file transfer
software: <pm:Software::Catalog::SW::filezilla>.
**That's it**
Vast world awaits for your new `*`zilla project.
lib/Acme/CPANModules/Foozilla.pm view on Meta::CPAN
but as you know Bugzilla itself is also written in Perl.
B<Filezilla>
I can only find the following modules related to this popular file transfer
software: L<Software::Catalog::SW::filezilla>.
B<That's it>
Vast world awaits for your new C<*>zilla project.
lib/Acme/CPANModules/Foozilla.pm view on Meta::CPAN
=item L<Wx::Mozilla>
Author: L<DSUGAL|https://metacpan.org/author/DSUGAL>
=item L<Software::Catalog::SW::filezilla>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=back
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Frameworks.pm view on Meta::CPAN
{module=>'ShipIt', tags=>['category:distribution-authoring']},
# e-commerce
{module=>'Interchange', tags=>['category:e-commerce']},
# logging
{module=>'Log::Any', tags=>['category:logging']},
{module=>'Log::Contextual', tags=>['category:logging']},
{module=>'Log::Dispatch', tags=>['category:logging']},
{module=>'Log::ger', tags=>['category:logging']},
{module=>'Log::Log4perl', tags=>['category:logging']},
# numeric
{module=>'PDL', tags=>['category:numeric']},
# oo
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/GrepVariants.pm view on Meta::CPAN
our $DATE = '2024-11-20'; # DATE
our $DIST = 'Acme-CPANModules-GrepVariants'; # DIST
our $VERSION = '0.013'; # VERSION
my $description = <<'_';
This list catalogs various grep-like tools.
**1. Reimplementations**
grep (from <pm:PerlPowerTools>) simply tries to reimplement grep in Perl, as
part of the project to reimplement many Unix utilities in Perl. It has few
lib/Acme/CPANModules/GrepVariants.pm view on Meta::CPAN
This document describes version 0.013 of Acme::CPANModules::GrepVariants (from Perl distribution Acme-CPANModules-GrepVariants), released on 2024-11-20.
=head1 DESCRIPTION
This list catalogs various grep-like tools.
B<1. Reimplementations>
grep (from L<PerlPowerTools>) simply tries to reimplement grep in Perl, as
part of the project to reimplement many Unix utilities in Perl. It has few
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules_ScenarioR/HTMLTable.pm view on Meta::CPAN
## no critic
package Acme::CPANModules_ScenarioR::HTMLTable;
our $VERSION = 0.002; # VERSION
our $results = do{my$var=[[200,"OK",[{_name=>"participant=Text::Table::Manifold",_succinct_name=>"TT:M",errors=>4.9e-05,participant=>"Text::Table::Manifold",pct_faster_vs_slowest=>0,pct_slower_vs_fastest=>6.36903376018626,rate=>15.8,samples=>21,time=...
1;
# ABSTRACT: List of modules that generate HTML tables
=head1 DESCRIPTION
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/HaveWebsite.pm view on Meta::CPAN
{module=>'App::cpanminus', website_url=>'http://cpanmin.us/'},
{module=>'App::perlbrew', website_url=>'https://perlbrew.pl/'},
{module=>'App::TimeTracker', website_url=>'http://timetracker.plix.at/'},
{module=>'Catalyst', website_url=>'http://www.catalystframework.org/'},
{module=>'Dancer', website_url=>'https://perldancer.org/'},
{module=>'Giblog', website_url=>'https://www.giblog.net/', description=>'Currently in Japanese only'},
{module=>'Mojolicious', website_url=>'https://mojolicious.org/'},
{module=>'MooX::Role::JSON_LD', website_url=>'https://davorg.dev/moox-role-json_ld/'},
{module=>'Padre', website_url=>'http://padre.perlide.org/'},
{module=>'PDL', website_url=>'https://pdl.perl.org'},
{module=>'Perl::Critic', website_url=>'http://perlcritic.com/'},
lib/Acme/CPANModules/HaveWebsite.pm view on Meta::CPAN
Author: L<YANICK|https://metacpan.org/author/YANICK>
Website URL: L<https://perldancer.org/>
=item L<Giblog>
Author: L<KIMOTO|https://metacpan.org/author/KIMOTO>
Currently in Japanese only
Website URL: L<https://www.giblog.net/>
=item L<Mojolicious>
Author: L<SRI|https://metacpan.org/author/SRI>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/CPANRatings/User/davidgaramond.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-davidgaramond'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\nOk, it's not 2004 anymore, I suggest we retire or start to deprecate this module? This module now requires Perl 5....
1;
# ABSTRACT: List of modules mentioned by CPANRatings user davidgaramond
__END__
lib/Acme/CPANModules/Import/CPANRatings/User/davidgaramond.pm view on Meta::CPAN
=item L<Data::Walk>
Author: L<GUIDO|https://metacpan.org/author/GUIDO>
Nice interface (the analogy to File::Find certainly helps) and very straightforward to use, but one thing I can't do is modify the data inplace. I spent about an of hours trying to make Data::Walk do inplace modification, but finally gave up and use ...
Rating: 8/10
=item L<Data::Transformer>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-perlancar'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\nI'm not sure this really "befits a ::Tiny distribution" just because it's a thin wrapper of something. P...
1;
# ABSTRACT: List of modules mentioned by CPANRatings user perlancar
__END__
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<LWP::JSON::Tiny>
Author: L<SKINGTON|https://metacpan.org/author/SKINGTON>
I'm not sure this really "befits a ::Tiny distribution" just because it's a thin wrapper of something. Please read: <a href="http://blogs.perl.org/users/dan_muey/2014/08/please-dont-use-tiny-unless-it-meets-the-tiny-criteria-thanks.html" re...
=item L<Acme::CPANRatings>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<Algorithm::Dependency>
Author: L<ETHER|https://metacpan.org/author/ETHER>
Happily returns result when graph is cyclic (and thus proper topological sorting cannot be done). See also Data::Graph::Util for a simpler alternative.
<br>
Rating: 6/10
=item L<Data::Match>
Author: L<KSTEPHENS|https://metacpan.org/author/KSTEPHENS>
(Reviewing Sort::Topological, which is included in Data-Match distribution at the time of this review).
<br><br>Hangs when given a dependency like: a => ["a"]. Happily returns result when graph is cyclic (and thus proper topological sorting cannot be done). See also Data::Graph::Util for alternative.
<br>
Rating: 4/10
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<WordPress::XMLRPC>
Author: L<IGIBBS|https://metacpan.org/author/IGIBBS>
Still works, partially, but in general out of date. For example, to get post the deprecated metaWeblog.getPost API method is still used instead of the newer wp.getPost call (which understandably is only introduced in WordPress 3.4, while this module ...
<br><br>Luckily, performing XMLRPC request directly is easy enough. Just use XMLRPC::Lite and peruse the Wordpress documentation here: <a href="https://codex.wordpress.org/XML-RPC_WordPress_API" rel="nofollow">codex.wordpress.org/XML-RPC_WordPress......
=item L<Text::Levenshtein::Flexible>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<File::Util>
Author: L<TOMMY|https://metacpan.org/author/TOMMY>
Point for documentation (lots of examples and cookbook). But the recipes in the cookbook currently don't really entice me to use the module. Let's see:
<br><br>1) batch file rename: it's much simpler to use 'rename' or 'perlmv' utility. Or, it's much shorter to just use plain perl like 'for (grep {-f} <*>) { rename $I<< , s/.log$/.txt/r }'.
<br><br>2) recursively remove a directory tree: it's much shorter to just use 'File::Path::remove >>tree()'.
<br><br>3) increment a counter file: no locking (it's classic 1990's counter.cgi race condition all over again). Take a look at, for example, The Perl Cookbook chapter 7.11. Or I think one of Randal Schwartz's articles.
<br><br>As an alternative, one can also take a look at Path::Tiny.
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
This module works well for string exceptions (e.g. die "some message"), but for ref/object exceptions (e.g. die [404,"Not found"] or die $some_object) it will simply print/return the ref/object and thus no stack trace information ...
<br><br>See also Devel::Confess, which can handle ref/object.
<br><br>References:
<br>
<a href="http://blogs.perl.org/users/graham_knop/2013/09/carp-always-evenobjects.html" rel="nofollow">blogs.perl.org/users/graham_knop/2013...</a>
=item L<experimental>
Author: L<LEONT|https://metacpan.org/author/LEONT>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
Author: L<CHGOVUK|https://metacpan.org/author/CHGOVUK>
I haven't used or evaluated this module in detail, but if there is one advantage to using procedural/command syntax:
<br><br>info blah;
<br><br>as opposed to object syntax:
<br><br>$log->info(blah);
<br><br>then this module clearly demonstrates it. Using Devel::Declare (or the Perl 5.14+ keyword API), the former can be easily rewritten as something like:
<br><br>info && blah;
<br><br>or:
<br><br>if (CONST_LOG_INFO) { info blah }
<br><br>and during compilation, Perl can optimize the line away and we get zero run-time penalty when logging (level) is disabled.
<br><br>(Actually, it's also possible for the object syntax to get rewritten, e.g. using source filter, but it's more cumbersome).
=item L<Benchmark::Timer>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<Debug::Easy>
Author: L<RKELSCH|https://metacpan.org/author/RKELSCH>
Not as easy as the name might claim. First of all, why do users need to pass B<LINE> explicitly for every call??? Other logging modules will get this information automatically via caller().
<br><br>Levels are a bit confusing: why is debug split to 2 (or 3)?
<br><br>Not as flexible as it should be because the design conflates some things together. For example, most levels output to STDERR but some level (VERBOSE) outputs to STDOUT instead. The output concern and levels should've been separated. Another e...
Rating: 4/10
=item L<File::Slurper>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<Devel::Messenger>
Author: L<KOLIBRIE|https://metacpan.org/author/KOLIBRIE>
I think this is basically logging under a fancy name and with a more cumbersome interface. Look at Log::Any instead.
=item L<Term::Twiddle>
Author: L<SCOTTW|https://metacpan.org/author/SCOTTW>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-10-29'; # DATE
our $DIST = 'Acme-CPANModules-Import-CPANRatings-User-stevenharyanto'; # DIST
our $VERSION = '0.002'; # VERSION
our $LIST = {description=>"This list is generated by scraping CPANRatings (cpanratings.perl.org) user page.",entries=>[{description=>"\n(REMOVED)\n",module=>"Log::Any",rating=>undef},{description=>"\nProvides a thin/lightweight OO interface for \$?, ...
1;
# ABSTRACT: List of modules mentioned by CPANRatings user stevenharyanto
__END__
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Text::Table::Tiny>
Author: L<NEILB|https://metacpan.org/author/NEILB>
Very fast, several times faster than Text::TabularDisplay or Text::Table (and many times faster than the other slower table-generator modules). It uses sprintf() to format a whole row instead of formatting each cell separately using sprintf() and joi...
<br><br>I did a comparison in: <a href="http://blogs.perl.org/users/steven_haryanto/2014/07/benchmarking-several-ascii-table-generator-modules.html" rel="nofollow">blogs.perl.org/users/steven_haryanto/...</a>
=item L<Mo>
Author: L<TINITA|https://metacpan.org/author/TINITA>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<App::Trace>
Author: L<SPADKINS|https://metacpan.org/author/SPADKINS>
The name and abstract is slightly inaccurate/misleading. This module is supposed to be a general logging framework instead of just subroutine entry/exit tracer. For alternative subroutine tracer, I'd recommend Devel::TraceSubs or Devel::TraceCalls (o...
<br><br>Not very convenient to use. It still requires you to put 'if $App::Trace' clause everytime. For general logging that can be switched on/off upon runtime, I'd recommend using Log::Any instead.
<br><br>Lastly, this module is tied to App::Options and thus only really usable if you use both.
=item L<Tie::Hash::Identity>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
Author: L<JOHNH|https://metacpan.org/author/JOHNH>
An interesting tool that has been developed since 1991 (which is roughly around the time the WWW and Linux was born, whew). Kudos to the author for the dedication and consistency.
<br><br>Since nowadays SQL is pretty much ubiquitous, users might also want to check out an alternative tool, App::fsql. For example (taking a similar example from the module's doc), to select entries in /etc/passwd where UID is between 1000 and 2000...
<br><br>$ ( echo -e "login\tpassword\tuid\tgid\tgecos\thome\tshell"; sed 's/:/\t/g' /etc/passwd ) | fsql --add-tsv - 'SELECT * FROM stdin WHERE uid >= 1000 AND uid <= 2000' --format text --aoh
=item L<Date::Tie>
Author: L<FGLOCK|https://metacpan.org/author/FGLOCK>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Taint::Runtime>
Author: L<RHANDOM|https://metacpan.org/author/RHANDOM>
Nice idea. Perl should really have included something like this (analogous to warnings.pm for -w).
<br><br>However, for something as security-related as tainting, I personally think the interface is a bit too complex and not robust enough. There are too many pitfalls where one can fail to turn on tainting properly.
<br><br>* First, user must remember to import $TAINT, or doing '$TAINT = 1' has no effect. There's no error/warning for this mistake.
<br><br>* Then, if one also forgets to import taint_start or taint_start, then doing 'taint_start' or 'taint_env' (without parentheses) will do nothing. Also does not produce an error/warning except under strict mode.
<br><br>* One must remember to 'taint_env' I<after> 'taint_start'. There's no warning/error if one does the opposite.
<br><br>I'd rather have something like this:
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<LWP::Protocol::Net::Curl>
Author: L<SYP|https://metacpan.org/author/SYP>
Shows great promise. I personally need this for HTTPS proxy support. After testing, the module still doesn't work to login to my internet banking sites. But I'll still check in from time to time.
<br>
=item L<Devel::SizeMe>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::AutoDump>
Author: L<CAGAO|https://metacpan.org/author/CAGAO>
This module is simple and to the point. Unfortunately, if you're a user of Log4perl or other logging framework, you'll have to switch just for a single feature (autodumping).
<br><br>An alternative is to use Log::Any, which also features autodumping (via $log->debugf("%s", $complex), $log->warnf(), and friends), while still allowing you to use Log4perl and other frameworks supported by Log::Any.
<br><br>
=item L<List::Pairwise>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Mail::Sendmail>
Author: L<NEILB|https://metacpan.org/author/NEILB>
I used Mail::Sendmail and a few others "older" modules back from the days when it didn't support setting envelope sender different from RFC From, and when the test hung on some dead host.
<br><br>If it's still working for you, great. I personally have moved on to other modules like Email::Sender::Simple, which abstracts sending mechanism (transport) and support SMTP auth, for two. Also, many of the guide/documentation for Mail::Sendma...
Rating: 6/10
=item L<autodie>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::Log4perl>
Author: L<ETJ|https://metacpan.org/author/ETJ>
It's a very mature and an excellent logging framework. However, some of the common minor complaints are: 1) It's too complex. I agree: it should not be this hard to get started. 2) Configuration is too verbose. Agreed: but well, what can you do, most...
<br><br>One of the main strengths of Log4perl is its sublogger/subcategory feature, which few other frameworks seem to have.
<br><br>For other alternatives, also take a look at: Log::Handler, Log::Any. And of course Log::Message too.
<br>
=item L<Log::Handler>
Author: L<BLOONIX|https://metacpan.org/author/BLOONIX>
This review mostly compares Log::Handler with Log4perl, which is a mature and one of the most popular logging frameworks.
<br><br>I think Log::Handler's interface is much simpler, nicer, more Perlish than Log4perl. It's a bit similar to Log::Any::App, which I created just because I hate Log4perl configuration.
<br><br>There is a unique concept of maxlevel not normally found in other frameworks, though it can be emulated in other frameworks using filters.
<br><br>At a quick glance, the speed is around twice that of Log::Log4perl, so I'll say it's on the low-end side (there are other much faster logging modules, but anyway speed is not an issue to most people).
<br><br>It currently lacks sublogger (hierarchical categorization and adjustable/automatic appending of subcategory to its parent), so it cannot be used to replace Log4perl in most cases as that's one of the main feature of Log4perl. Which is a pity ...
Rating: 8/10
=item L<Log::Fast>
Author: L<POWERMAN|https://metacpan.org/author/POWERMAN>
This logging framework is also minimalistic: no categories/hierarchiecal loggers, no custom levels, no config file, or other whistles and bells. And the interface & default levels are rather syslog-oriented. But it's fast alright. The POD doesn't...
<br><br>So this module will certainly come handy if you have a performance critical application.
<br><br>Btw, note that the benchmarks are done for actual logging to output. For log statements that do not actually get logged (e.g. because the level is below the desired output level), I don't find that extreme differences in overhead between log...
=item L<Log::Minimal>
Author: L<KAZEBURO|https://metacpan.org/author/KAZEBURO>
Log::Minimal's slogan is "minimal but customizable". It's minimal alright, probably only suitable for simple scripts as the moment you organize your application/library into separate modules, you'll want/need categories instead of just leve...
<br><br>Also, only formats is customizable, there is currently no way to customize level. And the levels are "not standard" (not that there is an official authoritative standard, but the popular convention is TRACE/DEBUG/INFO/WARN/ERROR/FAT...
<br>
DEBUG/INFO/WARN/CRITICAL and NONE). Surely most people would expect another level between WARN and CRITICAL, for non-critical errors? But that is actually just a matter of taste.
<br>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<Log::Fine>
Author: L<CFUHRMAN|https://metacpan.org/author/CFUHRMAN>
Log::Fine is touted as a framework for those who "need a fine-grained logging mechanism in their program(s)". But apart from the emphasis on custom levels, to me there is nothing extra fine-grained about it. The other thing it provides is c...
<br><br>Btw regarding custom levels, this practice is long deprecated by log4j (and thus also by Log4perl, although Log4perl can do custom levels). I can understand this decision as I sometimes already have trouble managing the popular convention of ...
Rating: 6/10
=item L<Config::IniFiles>
lib/Acme/CPANModules/Import/CPANRatings/User/stevenharyanto.pm view on Meta::CPAN
=item L<String::ShellQuote>
Author: L<ROSCH|https://metacpan.org/author/ROSCH>
I admit it. Ever since I know about escapeshellarg() and escapeshellcmd() in PHP, I've been reimplementing this function in Perl literally a million of times (mostly because of laziness and because it only takes a couple of lines in Perl). Only a fe...
<br><br>The only problem for this module is lack of visibility. Before I've never read articles or blog posts mentioning this module, ever. Yes, we have system() that can bypass the shell, but qx() can't. So yes, this module needs to be marketed more...
<br>
=item L<Capture::Tiny>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/InterestingTies.pm view on Meta::CPAN
The perl's tie interface allows you to create "magical" scalar, array, hash, or
filehandle. When you read or set the value of these variables, various things
can be triggered.
This <pm:Acme::CPANModules> list catalogs some of the interesting uses of the
tie() interface.
MARKDOWN
entries => [
lib/Acme/CPANModules/InterestingTies.pm view on Meta::CPAN
The perl's tie interface allows you to create "magical" scalar, array, hash, or
filehandle. When you read or set the value of these variables, various things
can be triggered.
This L<Acme::CPANModules> list catalogs some of the interesting uses of the
tie() interface.
=head1 ACME::CPANMODULES ENTRIES
=over
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/JSONVariants.pm view on Meta::CPAN
variants of JSON.
An overwhelmingly popular extension is comments, because JSON is used a lot in
configuration. Another popular extension is dangling (trailing) comma.
This list catalogs the various JSON variants which have a Perl implementation on
CPAN.
1) **JSON5**. <https://json5.org/>, "JSON for Humans". Allowing more
whitespaces, single-line comment (C++-style), multiline comment (C-style),
lib/Acme/CPANModules/JSONVariants.pm view on Meta::CPAN
variants of JSON.
An overwhelmingly popular extension is comments, because JSON is used a lot in
configuration. Another popular extension is dangling (trailing) comma.
This list catalogs the various JSON variants which have a Perl implementation on
CPAN.
1) B<JSON5>. L<https://json5.org/>, "JSON for Humans". Allowing more
whitespaces, single-line comment (C++-style), multiline comment (C-style),
single quote for strings, hexadecimal number literal (e.g. 0x123abc), leading
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/KitchenSinks.pm view on Meta::CPAN
"general utilities" library that grows and grows to the point of "it should
probably be refactored into multiple modules (but isn't yet)". Often it also
contains functionalities that are already present in other modules, but added
into the module anyway because it is convenient for the developer.
This list catalogs modules that I think are kitchen sink libraries.
_
entries => [
{module=>'Data::Table::Text'},
],
lib/Acme/CPANModules/KitchenSinks.pm view on Meta::CPAN
"general utilities" library that grows and grows to the point of "it should
probably be refactored into multiple modules (but isn't yet)". Often it also
contains functionalities that are already present in other modules, but added
into the module anyway because it is convenient for the developer.
This list catalogs modules that I think are kitchen sink libraries.
=head1 ACME::CPANMODULES ENTRIES
=over
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/LoadingModules.pm view on Meta::CPAN
<pm:lib::require::all> loads all modules in a directory.
**Logging module loading**
<pm:Require::HookChain::log::logger>
<pm:Require::HookChain::log::stderr>
**Preventing loading certain modules**
<pm:lib::filter>, <pm:lib::disallow>
lib/Acme/CPANModules/LoadingModules.pm view on Meta::CPAN
L<lib::require::all> loads all modules in a directory.
B<Logging module loading>
L<Require::HookChain::log::logger>
L<Require::HookChain::log::stderr>
B<Preventing loading certain modules>
L<lib::filter>, L<lib::disallow>
lib/Acme/CPANModules/LoadingModules.pm view on Meta::CPAN
=item L<lib::require::all>
Author: L<MIYAGAWA|https://metacpan.org/author/MIYAGAWA>
=item L<Require::HookChain::log::logger>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Require::HookChain::log::stderr>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<lib::filter>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/ManagingMultipleRepositories.pm view on Meta::CPAN
use strict;
use Acme::CPANModulesUtil::Misc;
my $text = <<'_';
This Acme::CPANModules list catalogs tools to manage multiple repositories.
Keywords: git, vcs, cvs
**1. On CPAN**
lib/Acme/CPANModules/ManagingMultipleRepositories.pm view on Meta::CPAN
This document describes version 0.002 of Acme::CPANModules::ManagingMultipleRepositories (from Perl distribution Acme-CPANModules-ManagingMultipleRepositories), released on 2023-10-29.
=head1 DESCRIPTION
This Acme::CPANModules list catalogs tools to manage multiple repositories.
Keywords: git, vcs, cvs
B<1. On CPAN>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/ModernPreambles.pm view on Meta::CPAN
use warnings;
use feature ':5.26';
mro::set_mro( scalar caller(), 'c3' );
I think <pm:Modern::Perl> is one of the first to popularize this modern preamble
concept and a bunch of similar preambles emerged. This list catalogs them.
Meanwhile, you can also use:
use v5.12; # enables strict and warnings, as well as all 5.12 features (see <pm:feature> for more details on new features of each perl release)
lib/Acme/CPANModules/ModernPreambles.pm view on Meta::CPAN
use warnings;
use feature ':5.26';
mro::set_mro( scalar caller(), 'c3' );
I think L<Modern::Perl> is one of the first to popularize this modern preamble
concept and a bunch of similar preambles emerged. This list catalogs them.
Meanwhile, you can also use:
use v5.12; # enables strict and warnings, as well as all 5.12 features (see L<feature> for more details on new features of each perl release)
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/NewDistributions/202001.pm view on Meta::CPAN
summary => "Distribution for unicode-block script.",
},
{
description => "Distribution App-geoip first released by HMBRAND at 2020-01-16T13:50:05Z.",
module => "App::geoip",
summary => "Show geological data based on hostname or IP address(es)",
},
{
description => "Distribution App-lcpan-CmdBundle-similar_authors first released by PERLANCAR at 2020-01-11T00:05:10Z.",
module => "App::lcpan::CmdBundle::similar_authors",
summary => "More lcpan subcommands related to finding similar authors",
lib/Acme/CPANModules/NewDistributions/202001.pm view on Meta::CPAN
description => "Distribution Net-SockAddr first released by SYBER at 2020-01-22T16:15:12Z.",
module => "Net::SockAddr",
summary => "Socket address OO-wrapper with Perl and C++ interface.",
},
{
description => "Distribution Net-SyslogNg first released by VRAG at 2020-01-10T09:59:11Z.",
module => "Net::SyslogNg",
summary => "client module for writing to syslog server (rfc5424)",
},
{
description => "Distribution Object-Adhoc first released by TOBYINK at 2020-01-24T17:12:36Z.",
module => "Object::Adhoc",
summary => "make objects without the hassle of defining a class first",
lib/Acme/CPANModules/NewDistributions/202001.pm view on Meta::CPAN
=item * L<App::Unicode::Block> - Distribution for unicode-block script.
Distribution App-Unicode-Block first released by SKIM at 2020-01-19T16:51:51Z.
=item * L<App::geoip> - Show geological data based on hostname or IP address(es)
Distribution App-geoip first released by HMBRAND at 2020-01-16T13:50:05Z.
=item * L<App::lcpan::CmdBundle::similar_authors> - More lcpan subcommands related to finding similar authors
lib/Acme/CPANModules/NewDistributions/202001.pm view on Meta::CPAN
=item * L<Net::SockAddr> - Socket address OO-wrapper with Perl and C++ interface.
Distribution Net-SockAddr first released by SYBER at 2020-01-22T16:15:12Z.
=item * L<Net::SyslogNg> - client module for writing to syslog server (rfc5424)
Distribution Net-SyslogNg first released by VRAG at 2020-01-10T09:59:11Z.
=item * L<Object::Adhoc> - make objects without the hassle of defining a class first
Distribution Object-Adhoc first released by TOBYINK at 2020-01-24T17:12:36Z.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/NonMooseStyleClassBuilder.pm view on Meta::CPAN
our $LIST = {
summary => 'List of non-Moose-style class builders',
description => <<'_',
This list catalogs class builders with interface that is different than the
Moose family.
See also a whole host of Class::Accessor::* modules.
_
lib/Acme/CPANModules/NonMooseStyleClassBuilder.pm view on Meta::CPAN
This document describes version 0.002 of Acme::CPANModules::NonMooseStyleClassBuilder (from Perl distribution Acme-CPANModules-NonMooseStyleClassBuilder), released on 2023-10-29.
=head1 DESCRIPTION
This list catalogs class builders with interface that is different than the
Moose family.
See also a whole host of Class::Accessor::* modules.
=head1 ACME::CPANMODULES ENTRIES
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/OneAndTwoDecimalDigitsVersionTrap.pm view on Meta::CPAN
Author's comment in ChangeLog: "This version number is broken because 0.46 >
0.46.1 because 0.46 normalizes to 0.460.000 while 0.46.1 is 0.046.100. This has
happened a few times to me in other distributions too, so perhaps it's time to
consider switching to a 3-digit minor version."
Author's blog post:
<https://perlancar.wordpress.com/2018/09/10/should-i-choose-x-yy-or-x-yyy-versioning-scheme-for-my-perl-module/>
(2016-09-10).
_
},
lib/Acme/CPANModules/OneAndTwoDecimalDigitsVersionTrap.pm view on Meta::CPAN
author=>"DAVECROSS",
description=><<'_',
Author's comment in ChangeLog: "Fixing the idiocy in the previous version."
Author's blog post: <https://perlhacks.com/2016/12/version-numbers/>
(2016-12-13).
_
},
lib/Acme/CPANModules/OneAndTwoDecimalDigitsVersionTrap.pm view on Meta::CPAN
Author's comment in ChangeLog: "This version number is broken because 0.46 >
0.46.1 because 0.46 normalizes to 0.460.000 while 0.46.1 is 0.046.100. This has
happened a few times to me in other distributions too, so perhaps it's time to
consider switching to a 3-digit minor version."
Author's blog post:
L<https://perlancar.wordpress.com/2018/09/10/should-i-choose-x-yy-or-x-yyy-versioning-scheme-for-my-perl-module/>
(2016-09-10).
=item L<Array::Compare>
lib/Acme/CPANModules/OneAndTwoDecimalDigitsVersionTrap.pm view on Meta::CPAN
Author: L<DAVECROSS|https://metacpan.org/author/DAVECROSS>
Author's comment in ChangeLog: "Fixing the idiocy in the previous version."
Author's blog post: L<https://perlhacks.com/2016/12/version-numbers/>
(2016-12-13).
=item L<Acme::CPANLists>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/OneLinerTools.pm view on Meta::CPAN
our $LIST = {
summary => 'List of modules to make your life easier when writing perl one-liners',
description => <<'MARKDOWN',
This list also tries to catalog modules that are meant to be primarily used in
one-liners.
MARKDOWN
entries => [
lib/Acme/CPANModules/OneLinerTools.pm view on Meta::CPAN
{
module => 'Log::ger::App',
description => <<'MARKDOWN',
A convenient way to display (consume) logs if your application uses
<pm:Log::ger> to produce logs.
MARKDOWN
tags => ['logging'],
},
{
module => 'DD::Dummy',
description => <<'MARKDOWN',
lib/Acme/CPANModules/OneLinerTools.pm view on Meta::CPAN
This document describes version 0.005 of Acme::CPANModules::OneLinerTools (from Perl distribution Acme-CPANModules-OneLinerTools), released on 2024-06-21.
=head1 DESCRIPTION
This list also tries to catalog modules that are meant to be primarily used in
one-liners.
=head1 ACME::CPANMODULES ENTRIES
=over
lib/Acme/CPANModules/OneLinerTools.pm view on Meta::CPAN
=item L<Log::ger::App>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
A convenient way to display (consume) logs if your application uses
L<Log::ger> to produce logs.
=item L<DD::Dummy>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules_ScenarioR/OrderedHash.pm view on Meta::CPAN
## no critic
package Acme::CPANModules_ScenarioR::OrderedHash;
our $VERSION = 0.004; # VERSION
our $results = do{my$var=[[200,"OK",[{_name=>"participant=Tie::StoredOrderHash",_succinct_name=>"T:S",errors=>1.4e-06,participant=>"Tie::StoredOrderHash",pct_faster_vs_slowest=>0,pct_slower_vs_fastest=>5.16666666666667,rate=>539,samples=>22,time=>1.8...
1;
# ABSTRACT: List of modules that provide ordered hash data type
=head1 DESCRIPTION
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/OrderingAndRunningTasks.pm view on Meta::CPAN
This list reviews what tools are available on CPAN and in general to order
multiple tasks (with possible interdependency) and running them (possibly in
parallel).
To specify dependency, you can use a graph then do a topological sort on it.
This will make sure that a task that depends on another is executed after the
latter. This will also check circular dependencies: if there is a circular
dependency, the graph becomes cyclical and will fail to sort topologically.
There are several modules to do topological sorting, among them: <pm:Graph>,
<pm:Data::Graph::Util>, <pm:Sort::Topological>. There's also
<pm:Algorithm::Dependency>.
To run tasks in parallel, you can also represent the tasks and dependencies
among them using a graph, then separate the connected subgraphs. The subgraphs
do not connect to one another and thus you can run the tasks in a subgraph in
lib/Acme/CPANModules/OrderingAndRunningTasks.pm view on Meta::CPAN
This list reviews what tools are available on CPAN and in general to order
multiple tasks (with possible interdependency) and running them (possibly in
parallel).
To specify dependency, you can use a graph then do a topological sort on it.
This will make sure that a task that depends on another is executed after the
latter. This will also check circular dependencies: if there is a circular
dependency, the graph becomes cyclical and will fail to sort topologically.
There are several modules to do topological sorting, among them: L<Graph>,
L<Data::Graph::Util>, L<Sort::Topological>. There's also
L<Algorithm::Dependency>.
To run tasks in parallel, you can also represent the tasks and dependencies
among them using a graph, then separate the connected subgraphs. The subgraphs
do not connect to one another and thus you can run the tasks in a subgraph in
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/OrganizingCPAN.pm view on Meta::CPAN
use strict;
use Acme::CPANModulesUtil::Misc;
my $text = <<'_';
This list catalog efforts to organize CPAN and help users navigate the sea of
modules on CPAN.
**Bundles and Tasks**
A `Bundle::*` module lists several modules that will all get installed simply by
lib/Acme/CPANModules/OrganizingCPAN.pm view on Meta::CPAN
This document describes version 0.002 of Acme::CPANModules::OrganizingCPAN (from Perl distribution Acme-CPANModules-OrganizingCPAN), released on 2023-10-29.
=head1 DESCRIPTION
This list catalog efforts to organize CPAN and help users navigate the sea of
modules on CPAN.
B<Bundles and Tasks>
A C<Bundle::*> module lists several modules that will all get installed simply by
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/PortedFrom/Ruby.pm view on Meta::CPAN
ruby_package => 'rails',
ruby_website_url => 'https://rubyonrails.org/',
},
{
module => 'Dotenv',
summary => 'Although the 12-factor methodology is not tied to a single language, the original implementation is in Ruby',
#tags => ['framework'],
ruby_package => 'dotenv',
ruby_website_url => 'https://github.com/heroku/12factor',
},
],
lib/Acme/CPANModules/PortedFrom/Ruby.pm view on Meta::CPAN
Ruby project's website: L<https://rubyonrails.org/>
=item L<Dotenv>
Although the 12-factor methodology is not tied to a single language, the original implementation is in Ruby.
Author: L<BOOK|https://metacpan.org/author/BOOK>
Ruby project's gem: L<https://rubygems.org/gems/dotenv>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/RenamingFiles.pm view on Meta::CPAN
our $LIST = {
summary => 'List of Perl modules (and scripts) to rename multiple files',
description => <<'_',
This list will attempt to catalog Perl modules (and scripts) that can be used to
rename multiple files, often by letting you transform the filename using Perl
code or regex.
The granddaddy of all this is of course Larry's own script <prog:rename>, which
appeared as a dozen-line simple example at least as early as 1989 in `eg/`
lib/Acme/CPANModules/RenamingFiles.pm view on Meta::CPAN
<prog:perlmv-u> from <pm:App::perlmv> (since 2017) is my other take. The main
feature is undo. It does not yet has nearly as many features as its older
brother `perlmv`.
<prog:pmv> from <pm:File::PerlMove> (since 2007) by Johan Vromans of
`Getopt::Long` fame. Like `File::Rename`, it also refactors the logic into
module. It also added a DWIM for specific Perl expression like `uc`, `lc` when
dealing with case-insensitive filesystems.
<pm:App::FileRenameUtils>, a collection of mass renaming utilities.
lib/Acme/CPANModules/RenamingFiles.pm view on Meta::CPAN
This document describes version 0.001 of Acme::CPANModules::RenamingFiles (from Perl distribution Acme-CPANModules-RenamingFiles), released on 2022-11-14.
=head1 DESCRIPTION
This list will attempt to catalog Perl modules (and scripts) that can be used to
rename multiple files, often by letting you transform the filename using Perl
code or regex.
The granddaddy of all this is of course Larry's own script L<rename>, which
appeared as a dozen-line simple example at least as early as 1989 in C<eg/>
lib/Acme/CPANModules/RenamingFiles.pm view on Meta::CPAN
L<perlmv-u> from L<App::perlmv> (since 2017) is my other take. The main
feature is undo. It does not yet has nearly as many features as its older
brother C<perlmv>.
L<pmv> from L<File::PerlMove> (since 2007) by Johan Vromans of
C<Getopt::Long> fame. Like C<File::Rename>, it also refactors the logic into
module. It also added a DWIM for specific Perl expression like C<uc>, C<lc> when
dealing with case-insensitive filesystems.
L<App::FileRenameUtils>, a collection of mass renaming utilities.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules/RequireHooks.pm view on Meta::CPAN
our $LIST = {
summary => 'List of modules that utilize require() hook',
description => <<'_',
This list tries to catalog all modules that utilize or provide `require()`
hook(s) to do various things.
**Blocking/filtering module loading**
lib/Acme/CPANModules/RequireHooks.pm view on Meta::CPAN
<pm:Require::HookChain>
**Logging**
<pm:Require::HookChain::log::stderr>
<pm:Require::HookChain::log::logger>
**Munging loaded source code**
<pm:Require::Hook::More>
lib/Acme/CPANModules/RequireHooks.pm view on Meta::CPAN
This document describes version 0.001 of Acme::CPANModules::RequireHooks (from Perl distribution Acme-CPANModules-RequireHooks), released on 2023-02-08.
=head1 DESCRIPTION
This list tries to catalog all modules that utilize or provide C<require()>
hook(s) to do various things.
B<Blocking/filtering module loading>
L<Require::Hook::Noop>
lib/Acme/CPANModules/RequireHooks.pm view on Meta::CPAN
L<Require::HookChain>
B<Logging>
L<Require::HookChain::log::stderr>
L<Require::HookChain::log::logger>
B<Munging loaded source code>
L<Require::Hook::More>
lib/Acme/CPANModules/RequireHooks.pm view on Meta::CPAN
=item L<Require::HookChain>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Require::HookChain::log::stderr>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Require::HookChain::log::logger>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Require::Hook::More>
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Acme/CPANModules_ScenarioR/TextTable.pm view on Meta::CPAN
## no critic
package Acme::CPANModules_ScenarioR::TextTable;
our $VERSION = 0.016; # VERSION
our $results = do{my$var=[[200,"OK",[{_name=>"participant=Text::UnicodeBox::Table",_succinct_name=>"Text::UnicodeBox::Table",errors=>0.0024,participant=>"Text::UnicodeBox::Table",pct_faster_vs_slowest=>0,pct_slower_vs_fastest=>365.666666666667,rate=>...
1;
# ABSTRACT: List of modules that generate text tables
=head1 DESCRIPTION
view all matches for this distribution