Reviews by Shawn M Moore



Test-Fatal (0.003) *****

Test::Fatal is an excellent replacement for Test::Exception. It provides a clear API that will work with anything you throw at it, whereas Test::Exception occasionally causes problems due to its (almost entirely) unneeded use of Sub::Uplevel.

The module's API is simultaneously simpler and more flexible than T:E, providing one common function, exception { ... }, which you can combine with any testing function provided by Test::More or its confederates.

true (0.14) *****

Some other reviewers seem to miss this point directly from the documentation: "it is intended to be invoked from the import method of a Modern::Perl-style module that enables modern Perl features and conveniences and cleans up legacy Perl warts." In other words you're not trading "1;" for "use true;", but you're trading *all* your "1;"s for a single "true->import;".

I would love for "use 5.16" to turn on true for me! Perl has perfectly good ways of signaling errors, a module's return value is not among them.

Task (1.04) *****

Remember Bundles? Me neither. Task has really caught on, and for good reason.

Sub-Call-Tail (0.01) *****

Oh hey, this solves problems I didn't even realize I had. I have shied away from tail calls when they demanded @_ mangling. Now I'm free!

Thanks יובל קוג'מן for yet again enabling us to write shinier Perl code.

Encode-DoubleEncodedUTF8 (0.02) *****

This is really handy for reading tweets, IRC chatter, and other messages that have been misencoded. Thanks for the clever module!

PSQL-Query (0.01_02)


Book-Chinese-MasterPerlToday (0.01_04) *****

(This is a response to Dan Dascalescu's rating)

English is an incredibly difficult language to learn. It takes several years of study to become literate. You don't need to have fluency in English to use Perl; you could learn the keywords by rote. For the rest of the documentation you need, you could use machine translation (or better yet, resources in your native language!).

There is plenty of value in having documentation in other languages. Perhaps such documentation will intrigue someone to learn Perl when they would have turned to some other programming language. I imagine more than a few of the 1.3 billion speakers of Chinese will benefit from this book, as will the Perl community from their eventual contributions.

"The vast majority of software and documentation is written in English, like it or not."

Fayland is trying his best to rectify that! The computer science field has far more than its fair share of Anglocentrism as it is.

namespace-autoclean (0.08) *****

This module lets me eliminate "no Moose" boilerplate by writing a "use Moose"-alike that also sets up autoclean. Its use of Class::MOP to find methods is pretty clever and (usually) works well.

Moose (0.69)

No longer applicable.

Perl-Shell (0.01)


DateTime-Format-Natural (0.61) *****

This is an excellent module with an exemplary author. Steven is very responsive to all of my feature requests.

If you're parsing dates, you'd do well to use this module.

HTML-ResolveLink (0.05) *****

This module just saved me I don't know how much development time. Thank you Miyagawa!

Devel-Declare (0.001004) *****

This project is very exciting. Just look at this snippet from t/simple.t:

method bar {

$args1 = join(', ', @_);


Keep in mind this is running happily with use strict, and is not a brittle source filter.

You want to see some real magic? Check out t/sugar.t:

method foo ($foo) {

return (ref $self).': Foo: '.$foo;


Friends, we're looking at the beginnings of Real Macros. I anxiously await further releases of Devel::Declare.

Test-Tester (0.106) *****

Test::Tester is your best choice if you're writing a testing module. Its interface is far superior to that of Test::Builder::Tester. Great work, Fergal.