Ratings and Reviews for CPAN


Rate a distribution

Find a distribution you would like to review:

Recent reviews (RSS feed)

Class-Load (0.23) *

Class::Load is easy to use... until you discover its caveats.
For example try_load_class doesn't work properly with 'Sub::Util' See rt.cpan.org/Ticket/Display.html?id=11...

Use instead Module::Runtime (that Class::Load now uses under the hood).

File-Util (4.161200)

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:

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 $_, s/\.log$/.txt/r }'.

2) recursively remove a directory tree: it's much shorter to just use 'File::Path::remove_tree()'.

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.

As an alternative, one can also take a look at Path::Tiny.

IP-China (20160412)

Disclosure: I wrote this module.

FFI-Platypus (0.41) *****

FFI::Platypus is an excellent module: It is easy to use due to wonderful documentation, which includes plenty of examples as well as several in-depth discussions. And, most importantly, it works!

JavaScript (1.16) ***

This is an excellent module. However it's currently suffering from a slight case of abandonment and is hard to install in up-to-date distributions. Hoping it gets some love soon because essentially when built with older versions of the mozilla javascript library (and when it was used to be available in a Debian package) it was a very useful and reliable module.

Nowadays I'd recommend transitioning to Javascript::V8 instead though.

But if you want to build it, see this:


Mail-SpamAssassin-Contrib-Plugin-IPFilter (1.1) *****

Disclosure: I wrote this module.

Git-Wrapper (0.045) *****

Whenever I need to interact with a git repo, I use Git::Wrapper. It works very well, is well maintained and makes git repo interactions easy.

Perl-Logger (0.0.1) ****

logging impact

Contenticious (0.35) *****

Excellent module. It enabled me to kit bash a good-looking website for a friend in a very short while. Thanks, Mirko!

App-GitGot (1.330) *****

I have loved this module since I discovered it in early 2015. The author quickly answered my questions and was very receptive to my suggestions. It makes submission of pull requests for forked projects very easy, which is a great boon to me since I am very interested in supporting the Perl 6 projects where I am able. Thanks, genehack!

JSON-MaybeXS (1.003005) *****

JSON::MaybeXS is what I would recommend anyone doing either reading or writing JSON in 2016.

It transparently wraps around deferring to an XS-based implementation wherever possible ( Including some XS implementations not supported by JSON.pm ), and falls back to JSON::PP nicely if no XS based implementation is available/can be installed, and allows you to absolve yourself of any political/technical consequences with having to choose a backend implementation, and allows the end user to have more control of that.

Devel-Isa-Explainer (0.001000) *****

Very nifty way to quickly get a handle on how a moderately complex codebase fits together & visualize inheritance issues.

URI-Encode (v1.0.1) **

Does NOT escape reserved characters by default! (Unlike URI::Escape.)

SMS-Send (1.06) ****

There are 100s of SMS related projects on CPAN. I looked at as many as I could and then settled to build my drivers against the SMS::Send API as it appears to be the easiest and most open. I ended up writing a custom SMS::Send::Driver base class called SMS::Send::Driver::WebService that has most of everything you need to provide a API against an Internet-based web service. (username, password, url) and an INI capability to store them.

Test-Without-Module (0.18) *****

I prefer Test::Without::Module over Devel::Hide simply because it does not print out the text "Devel::Hide hides XXX". I'm using Test::Without::Module in production to patch up a broken mrtg with IPv6.

perl -MTest::Without::Module=Socket6 /usr/bin/mrtg

DOM-Tiny (0.003)

Edit: All parties involved have found a mutually acceptable solution. DOM::Tiny is going away and there will be a new friendly fork called Mojo::DOM58, focused solely on Perl 5.8 compatibility, with the blessing of the Mojolicious core team. So this rating is no longer relevant.

DOM-Tiny (0.003) *****

Handy. Dunno if this fits the rules for ::Tiny modules, but I never cared too much for that - it's nicely self-contained and works well enough, so it's a great little module when you just need to do a bit of XML/HTML parsing. Thanks both to sri and the Mojolicious team for writing the original code, and DBOOK/mst for making it more accessible.

Mojolicious (6.57) *****

The best framework on today!

Mojolicious-Plugin-QuickPg (1.1)

Good choice for rapid development

CGI-IDS (1.0217) *****

Does what it says on the tin. Very useful. Would be nice to ensure it's kept up to date with any current techniques. I use it in github.com/nigelhorne/CGI-Allow

JE (0.066) *****

it just works. Fantastic!

Common-Routine (0.0.5)

A couple of comments:

* 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).

* round() uses Number::Format, note that rounding number using this module is hundreds of times slower than using sprintf().

Getopt-Long (2.48) *****

There are a lot of competitors out there in the Getopt::* namespace, but none I've looked at actually seem like they're worth the trouble.
Getopt::Long does around 90% of what you really need, though in my opinion the default behavior is a little unfortunate: don't ignore the "bundling" and "no_ignore_case" options. Some about this on IMB site www.ibm.com/developerworks/community/...

Data-Compare (1.21) *****

This module just works. It's not easy to compare data structures but this one does a good job making a difficult task with in an easy interface.

App-ThinPacker (0.11)

This module injects code that downloads files from port 80 of an unknown .ru site and executes it with root user privileges. What could possibly go wrong!