view release on metacpan or search on metacpan
Hash::Util::Pick
Author: PINE <https://metacpan.org/author/PINE>
One can easily use this idiom instead: <br><br>$picked = { map
{(exists $hash{$*} ? ($*=>$hash{$*}):())} @keys }; <br><br>or:
<br><br>$picked = { map {$*=>$hash{$*}} grep {exists $hash{$*}}
@keys }; <br><br>or (if you want non-existing picked keys to be
created instead): <br><br>$picked = { map {$_ => $hash{$_}} @keys
}; <br><br>but Hash::Util::Pick is implemented in XS and can be a
few times faster than the above when the number of keys has reached
thousands. So I guess this module has its uses.
NetObj::IPv4Address
Author: HEEB <https://metacpan.org/author/HEEB>
Cons: more heavyweight (requires Moo), limited operations/methods,
can only handle IPv4 and not IPv6. Pros: some operations are faster
than competing modules, e.g. validation. See also: NetAddr::IP,
Net::CIDR. <br>
NetObj::MacAddress
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.
Common::Routine
Author: PEKINGSAM <https://metacpan.org/author/PEKINGSAM>
A couple of comments: <br><br>* Some functions like min(), max(),
etc need not be reinvented because they are already in core module
List::Util. But I guess the author wants to be able to say
min([1,2,3]) in addition to min(1,2,3). <br><br>* round() uses
Number::Format, note that rounding number using this module is
hundreds of times slower than using sprintf(). <br><br>
Submodules
Author: ZARABOZO <https://metacpan.org/author/ZARABOZO>
A couple of prior arts: <br><br>* all, <a
href="https://metacpan.org/pod/all"
rel="nofollow">metacpan.org/pod/all</a> (since 2003), nicer
href="https://metacpan.org/pod/Module::Require"
rel="nofollow">metacpan.org/pod/Module::Require</a> (since 2001),
also nicer interface, more flexible, and more lightweight
implementation. <br><br>I don't like Submodules' interface, it's too
verbose and clunky. IMO, the interface should be a one-liner and
without manual looping.
Regexp::Assemble
Author: RSAVAGE <https://metacpan.org/author/RSAVAGE>
I guess it depends on your data, but for random shortish strings
(hundreds to thousands of them), I find that using raw joining is
much faster to assemble the regex. And the resulting regex is also
(much) faster to match. Please see Bencher::Scenario::RegexpAssemble
if you're interested in the benchmark script.
Tie::Scalar::Callback
Author: DFARRELL <https://metacpan.org/author/DFARRELL>
There is a prior art Tie::Simple (created in 2004) which works for
scalar as well as the other types of ties that perl supports (array,
From the doc: "This module generates one's Chinese zodiac.
However, for those born in late January to early February, it may be
wrong." Well, a module that might return wrong results is not
very useful. <br>
Rating: 2/10
JSON::MultiValueOrdered
Author: TOBYINK <https://metacpan.org/author/TOBYINK>
I guess if you want to switch JSON implementation more easily with
JSON, JSON::PP, and JSON::XS, it's better to use
JSON::Tiny::Subclassable instead of JSON::Tiny, because the
interface is more similar to JSON{::XS,::PP}, although it's not
exactly the same. JT:Subclassable also supports pretty() which is
often used when debugging. In short, I found
JSON::Tiny::Subclassable is a better "Tiny JSON" module
than JSON::Tiny.
JSON::Tiny
Author: DAVIDO <https://metacpan.org/author/DAVIDO>
Ah, the many JSON implementation modules out there... <br><br>I
guess if you want to switch JSON implementation more easily with
JSON, JSON::PP, and JSON::XS, it's better to use
JSON::Tiny::Subclassable instead of JSON::Tiny, because the
interface is more similar to JSON{::XS,::PP}, although it's not
exactly the same. <br><br>
Devel::Confess
Author: HAARG <https://metacpan.org/author/HAARG>
Provides some more features compared to Carp::Always, like producing
stack trace even when exception is ref/object, color & dump
The move to Moo is very welcome, but I wish there were an
alternative of CHI which is even more lightweight (starts in under
0.01s). CHI::Tiny, anyone?
App::YTDL
Bit of a shame that we currently don't have a working YouTube
download script/module (WWW::YouTube::Download is last updated 2013
and has been broken for a long while). This module actually requires
another *Python* script to do its job. I might as well skip this and
go straight to the Python script. <br><br>UPDATE 2016-03-04: I guess
it's been so for a few years, but this still needs to be said: For
downloading YouTube videos, use youtube-dl (a far more popular
Python project) and just forget the rest. Keeping up with YouTube
changes is many times a full time job. Nothing else comes remotely
close.
XXX Author: INGY <https://metacpan.org/author/INGY>
The part that makes this module convenient is that the functions
return their original arguments. So when debugging (peppering dump
devdata/perlancar view on Meta::CPAN
(<a href="https://metacpan.org/release/Hash-Util-Pick/">0.03</a>)
</h3>
<blockquote class="review_text">
One can easily use this idiom instead:
<br><br>$picked = { map {(exists $hash{$_} ? ($_=>$hash{$_}):())} @keys };
<br><br>or:
<br><br>$picked = { map {$_=>$hash{$_}} grep {exists $hash{$_}} @keys };
<br><br>or (if you want non-existing picked k...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2016-08-28T21:18:03
(<a href="/dist/Hash-Util-Pick#12854">permalink</a>)
</p>
<div class="helpfulq">
devdata/perlancar view on Meta::CPAN
(<a href="https://metacpan.org/release/Common-Routine/">0.0.5</a>)
</h3>
<blockquote class="review_text">
A couple of comments:
<br><br>* Some functions like min(), max(), etc need not be reinvented because they are already in core module List::Util. But I guess the author wants to be able to say min([1,2,3]) in addition to min(1,2,3).
<br><br>* round() ...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2016-03-23T22:27:38
(<a href="/dist/Common-Routine#12744">permalink</a>)
</p>
<div class="helpfulq">
devdata/perlancar view on Meta::CPAN
(<a href="https://metacpan.org/release/Regexp-Assemble/">0.36</a>)
</h3>
<blockquote class="review_text">
I guess it depends on your data, but for random shortish strings (hundreds to thousands of them), I find that using raw joining is much faster to assemble the regex. And the resulting regex is also (much) faster to match. Please see Bencher::Scenario...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2016-02-10T06:16:31
(<a href="/dist/Regexp-Assemble#12394">permalink</a>)
</p>
<div class="helpfulq">
devdata/perlancar view on Meta::CPAN
<img src="//cdn.perl.org/perlweb/cpanratings/images/stars-5.0.png" alt="*****">
</h3>
<blockquote class="review_text">
I guess if you want to switch JSON implementation more easily with JSON, JSON::PP, and JSON::XS, it's better to use JSON::Tiny::Subclassable instead of JSON::Tiny, because the interface is more similar to JSON{::XS,::PP}, although it's not exactly th...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2015-09-30T03:31:32
(<a href="/dist/JSON-MultiValueOrdered#12266">permalink</a>)
</p>
<div class="helpfulq">
devdata/perlancar view on Meta::CPAN
(<a href="https://metacpan.org/release/JSON-Tiny/">0.53</a>)
</h3>
<blockquote class="review_text">
Ah, the many JSON implementation modules out there...
<br><br>I guess if you want to switch JSON implementation more easily with JSON, JSON::PP, and JSON::XS, it's better to use JSON::Tiny::Subclassable instead of JSON::Tiny, because the interface i...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2015-09-30T03:30:18
(<a href="/dist/JSON-Tiny#12264">permalink</a>)
</p>
<div class="helpfulq">
devdata/perlancar view on Meta::CPAN
(<a href="https://metacpan.org/release/App-YTDL/">0.250</a>)
</h3>
<blockquote class="review_text">
Bit of a shame that we currently don't have a working YouTube download script/module (WWW::YouTube::Download is last updated 2013 and has been broken for a long while). This module actually requires another *Python* script to do its job. I might as w...
</blockquote>
<div class="review_footer">
<p class="review_attribution">
<a href="/user/perlancar">perlancar</a> - 2014-09-11T02:01:39
(<a href="/dist/App-YTDL#11911">permalink</a>)
</p>
<div class="helpfulq">
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
package Acme::CPANModules::Import::CPANRatings::User::perlancar;
use strict;
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__
=pod
=encoding UTF-8
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<Hash::Util::Pick>
Author: L<PINE|https://metacpan.org/author/PINE>
One can easily use this idiom instead:
<br><br>$picked = { map {(exists $hash{$I<} ? ($>=>$hash{$I<< }):())} @keys };
<br><br>or:
<br><br>$picked = { map {$ >>=>$hash{$I<}} grep {exists $hash{$>}} @keys };
<br><br>or (if you want non-existing picked keys to be created instead):
<br><br>$picked = { map {$_ => $hash{$_}} @keys };
<br><br>but Hash::Util::Pick is implemented in XS and can be a few times faster than the above when the number of keys has reached thousands. So I guess this module has its uses.
=item L<NetObj::IPv4Address>
Author: L<HEEB|https://metacpan.org/author/HEEB>
Cons: more heavyweight (requires Moo), limited operations/methods, can only handle IPv4 and not IPv6. Pros: some operations are faster than competing modules, e.g. validation. See also: NetAddr::IP, Net::CIDR.
<br>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
<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.
=item L<Common::Routine>
Author: L<PEKINGSAM|https://metacpan.org/author/PEKINGSAM>
A couple of comments:
<br><br>* Some functions like min(), max(), etc need not be reinvented because they are already in core module List::Util. But I guess the author wants to be able to say min([1,2,3]) in addition to min(1,2,3).
<br><br>* round() uses Number::Format, note that rounding number using this module is hundreds of times slower than using sprintf().
<br><br>
=item L<Submodules>
Author: L<ZARABOZO|https://metacpan.org/author/ZARABOZO>
A couple of prior arts:
<br><br>* all, <a href="https://metacpan.org/pod/all" rel="nofollow">metacpan.org/pod/all</a> (since 2003), nicer interface and offers "use"/compile-time interface, so it's more equivalent to the statements it wants to replace. The Submodul...
<br><br>* Module::Require, <a href="https://metacpan.org/pod/Module::Require" rel="nofollow">metacpan.org/pod/Module::Require</a> (since 2001), also nicer interface, more flexible, and more lightweight implementation.
<br><br>I don't like Submodules' interface, it's too verbose and clunky. IMO, the interface should be a one-liner and without manual looping.
=item L<Regexp::Assemble>
Author: L<RSAVAGE|https://metacpan.org/author/RSAVAGE>
I guess it depends on your data, but for random shortish strings (hundreds to thousands of them), I find that using raw joining is much faster to assemble the regex. And the resulting regex is also (much) faster to match. Please see Bencher::Scenario...
=item L<Tie::Scalar::Callback>
Author: L<DFARRELL|https://metacpan.org/author/DFARRELL>
There is a prior art Tie::Simple (created in 2004) which works for scalar as well as the other types of ties that perl supports (array, hash, handle).
<br>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
From the doc: "This module generates one's Chinese zodiac. However, for those born in late January to early February, it may be wrong." Well, a module that might return wrong results is not very useful.
<br>
Rating: 2/10
=item L<JSON::MultiValueOrdered>
Author: L<TOBYINK|https://metacpan.org/author/TOBYINK>
I guess if you want to switch JSON implementation more easily with JSON, JSON::PP, and JSON::XS, it's better to use JSON::Tiny::Subclassable instead of JSON::Tiny, because the interface is more similar to JSON{::XS,::PP}, although it's not exactly th...
=item L<JSON::Tiny>
Author: L<DAVIDO|https://metacpan.org/author/DAVIDO>
Ah, the many JSON implementation modules out there...
<br><br>I guess if you want to switch JSON implementation more easily with JSON, JSON::PP, and JSON::XS, it's better to use JSON::Tiny::Subclassable instead of JSON::Tiny, because the interface is more similar to JSON{::XS,::PP}, although it's not ex...
<br><br>
=item L<Devel::Confess>
Author: L<HAARG|https://metacpan.org/author/HAARG>
Provides some more features compared to Carp::Always, like producing stack trace even when exception is ref/object, color & dump function arguments (so you don't need a separate Carp::Always::Dump and Carp::Always::Color). Recommended.
<br>
lib/Acme/CPANModules/Import/CPANRatings/User/perlancar.pm view on Meta::CPAN
=item L<CHI>
Author: L<ASB|https://metacpan.org/author/ASB>
The move to Moo is very welcome, but I wish there were an alternative of CHI which is even more lightweight (starts in under 0.01s). CHI::Tiny, anyone?
=item L<App::YTDL>
Bit of a shame that we currently don't have a working YouTube download script/module (WWW::YouTube::Download is last updated 2013 and has been broken for a long while). This module actually requires another I<Python> script to do its job. I might as ...
<br><br>UPDATE 2016-03-04: I guess it's been so for a few years, but this still needs to be said: For downloading YouTube videos, use youtube-dl (a far more popular Python project) and just forget the rest. Keeping up with YouTube changes is many tim...
=item L<XXX>
Author: L<INGY|https://metacpan.org/author/INGY>
The part that makes this module convenient is that the functions return their original arguments. So when debugging (peppering dump statements), you don't have to change this:
<br><br>return ["some", $expr];
<br><br>to this (taking an example from another dumping module, Data::Dump):
<br><br>my $tmp = ["some", $expr]; dd $tmp; return $tmp;