Reviews by Evan Haas



Try-Tiny (0.09) ***

Warning: if you are considering this module now that the "Error" module has been decommissioned, of if you are used to try/catch in the C++/Java/.NET worlds, the semantics here are quite different. In most other realms, all exceptions propagate out of a try block, unless you explicitly catch them. Here, the reverse is true - everything is swallowed by the try block, unless you explicitly propagate it in the catch block as follows:

try { # do stuff }
catch { die $_; }
finally { # cleanup };

Why take a known syntax and give it different semantics? That can only lead to confusion. It would be better to use different keywords for this, methinks.

Devel-StackTrace (1.27) *****

We had a need for some of our shared libraries to behave differently if the caller was mod_perl (vs. a batch job). This module allowed us to solve the problem neatly.

XML-SemanticDiff (1.0000) *****

Does what it says, another great tool for the toolbox.

XML-LibXML (1.70) *****

As others have mentioned, it has a bit of a learning curve, but it's worth it. If you start with another XML parser, you'll just outgrow it.

Supports both tree- and stream-based parsing, so you can make the performance vs. convenience decision on a case-by-case basis.

Test-Deep (0.108) *****

This module is delicious. We use it heavily in our test scripts, for comparing expected vs. actual output.

Pod-Simple (3.16) *****

Echoing adam's review, we use only the command-line interface and it works great. For CPAN look/feel, just overwrite the provided stylesheet with CPAN's after generation:

wget -O /my/pod/dir/_blkbluw.css

Test-Class (0.36) *****

As a converted Java developer, this module is a very nice creature comfort.

Test-Most (0.23) *****

Does what it says, very useful.

Test-Simple (0.96) *****

If you're looking to start writing automated tests, look no further, this is the de facto standard and deservedly so.

Installing this module via Test::Most will get you other goodies that you'll probably want soon, if not immediately.

If you prefer xUnit/OO style tests, you can use Test::Class on top of Test::More.

perl-ldap (0.37) *****

We have used this module to extract info from Active Directory for several years now, never had any problems.

Class-Singleton (1.4) ***

Love the idea. It seems, though, that all but the most trivial of classes would have to override _new_instance (if only to call their own constructor). At that point, ease-of-use begins to slip and I may as well manage the singleton member myself. I suggest having Class::Singleton call the constructor directly ($class->new) when creating a new instance.

Params-Validate (0.94) *****

1) Rich features. It handles common validations out-of-the-box, and with the ability to specify a regex/callback it's easily extensible.

2) The error messages generated when validation fails are very user-friendly.

3) The documentation is also stellar; every question I've had has been answered there.

Use it without hesitation.