Reviews by Adrian Howard


Test-Class-Most (0.03) *****

Less boilerplate is good. Does what it says. Handy :)

Apache-Htpasswd (1.8) *****

Let's me update and use .htaccess files. Trez useful. Does what it says on the tin.

ANSIColor (2.02) *****

Saves all that tedious mucking about with escape codes. Recommended.

List-MoreUtils (0.22) *****

Hugely useful list of utility functions that I find make my code easier to write, easier to read and faster.

Well documented. Does what it says it does.

Captcha-reCAPTCHA (0.92) *****

Does what it says on the tin. Simple to use. Sane API. Recommended.

HTML-Parser (3.60) *****

It works. What more can you say. Sane APIs. Useful functionality. HTML::LinkExtor is an especially useful tool for folk having to munge HTML. Very nice.

Template-Plugin-Comma (0.04) *****

It adds commas to numbers in TT (1000 => 1,000, etc.).

I like small modules that do what they say :-)

Digest-MD5 (2.38) *****

Does what it says on the tin and does it well.

Catalyst-View-Excel-Template-Plus (0.01) *****

Trez handy module for producing pretty Excel output in Catalyst. Saved me a whole bunch of time.

Time-HiRes (1.9718) *****

Completely agree with Adam's review. Does exactly what it says on the tin. Works well on every platform I've used it on. ++

libwww-perl (5.822) *****

Does exactly what it says on the tin.

Params-Util (0.33) *****

Nice set of functions for testing validity. Simple. Do the job. ++

DateTime (0.4305) *****

You want sane datetime handing in Perl. You want this module. Does the job. Few odd corners in the API - but leaps and bounds ahead of everything else that I've played with on CPAN for accurate date/time handling.

Perl-Critic (1.091) *****

I've found Perl::Critic an invaluable tool with legacy code - making it very easy to focus down on trouble spots that need immediate attention.

Trivially customisable to make it only complain about the things I care about. Large library of policies on CPAN so I mostly can just pick and choose without having to write my own. Nice API for those few times when I do have to code something myself.

Been an essential part of my toolkit for some time.

Test-Aggregate (0.31) *****

The slower a test suite runs, the less likely folk will run it - so Test::Aggregate is a useful addition to my tool set when I've got a traditional set of *.t Perl tests that need to be run more quickly.

When I applied T::A to one $work project I cut 30% off the wall clock time for the core test suite. Useful.

File-HomeDir (0.80) *****

Makes a whole bunch of platform specific code just go away. Trez useful.

Test-Harness (3.12) *****

Test::Harness has always been useful - but since the 3.x release we've had something much more flexible that's letting me do some things easily that used to take terribly evil hacks with Test::Harness::Straps. Often just with the standard prove commend line. Nice.

DashProfiler (1.13) *****

Simple, flexible and blindingly fast code profiling system. Stupidly useful. Thoroughly recommended.

App-Asciio (0.95_01) *****

ASCII Art Visio - it rocks!

YAML-Tiny (1.25) *****

It's lightweight. It does what it says on the tin. The bugs I report get fixed. I like it :-)

SVN-Notify (2.70) *****

It sends commit messages. You can make them pretty. You can configure the heck out of it. Is good.

Geo-Postcode (0.15) **

Nice API, and would be a pleasure to use if it didn't reject some valid postcodes - hence the low rating. Would be a five otherwise.

There is an outstanding RT issue with a patch for the problem since 2006 :-)

Rose-DB-Object (0.763) *****

Clean. Elegant. Fast. So far every time I've looked for a bit of functionality it's been there hiding in the docs. Thoroughly recommended.

Rose-DB (0.733) *****

Nice abstraction for handling database handles. Being able to register multiple DBHs for live/testing/etc. is a boon.

ack (1.58) *****

This rocks. Just removed a bunch of awk/sed/find/grep alias in my *.rc files since this handles them all much more nicely. Huzzah.

Class-InsideOut (1.00) *****

I like this rather a lot. A nice minimal implementation of inside out objects that doesn't get in the way, and doesn't force you to recast your entire OO infrastructure. No source filters, CHECK blocks, etc. so works fine with mod_perl. Nice.

Test-Exception (0.21)

Just a quick comment that you can use Test::Exception without prototypes if you so wish, and since 0.21 this is documented in the POD.

Mac-Growl (0.62) *****

Growl is a rather funky open-source notification framework for Mac OS X. There are several different possible ways of talking to Growl via Perl (Applescript, command line, etc.) and Mac::Growl does a good job of hiding all of this behind a single API. Nice.

Spreadsheet-ParseExcel-Simple (1.01) *****

A simplified subset of Spreadsheet::ParseExcel functionality.

For many real world tasks with Excel spreadsheets all you need to do is read rows of data from sheets. This module provides a clean and simple API for doing just that.

Does exactly what it says on the tin.

Test-Pod (1.02) *****

Handy module for testing that your POD is syntactically correct. Reduced my POD test file from 40 odd lines of code to just 4.

Sub-Uplevel (0.08) *****

Allows you to pretend to run a function in a higher stack frame. Useful for wrapping subroutines so that they don't realise that they're wrapped.

Module-Build (0.21) *****

Replacement for ExtUtils::MakeMaker. Very nice. If you need to write custom build scripts try this instead of ExtUtils::MakeMaker. It's 100% Perl OO architecture makes everything so much more simple.

Pod-Coverage (0.12) *****

Nice module that allows you to check whether your subroutines are documented with POD. Very useful in test suites to make sure you keep everything documented.

Exception-Class (1.15) *****

Allows you to declare multiple exception classes concisely. API documented well. Easy to override default behaviour when you need to.

Test-Deep (0.08) *****

Handy for testing complex data structures.

File-Find-Rule (0.20) *****

Does the job and doesn't suck. Excellent module.

Test-DatabaseRow (1.01) *****

Handy module for testing contents of database rows.

DBD-Pg (1.22) *****

Excellent module. Does the job.

Test-Warn (0.08) *****

Handy module for unit testing code that may throw warnings.

CGI-Kwiki (0.17) ****

Very nice Wiki implementation. Very easy to setup. Very easy to customise.

The only thing I miss is an RSS view of recent changes.

Acme-JAPH (0.03) ***

It's a joke. Not a very good one mind, but a joke.

Template-Extract (0.11) *****

Very nice tool for generating simple parsers / screen scrapers. You write a template toolkit template that would generate your content (using a subset of TT commands) and Template::Extract does the rest.

Most funky.

Data-UUID (0.11) *****

Very handy module for creating globally unique identifiers. Simple. Does the job.

XML-RSS (1.02) ****

Excellent module for those who need to export various syndication formats. Supports RSS 0.9, 0.91 and RSS 1.0

Mail-CheckUser (1.19) ****

Nice alternative to Email::Valid that provides several more mechanisms for validating email addresses.

Loses a few points on the interface since package behaviour is controlled by global variables, which can make it a bit of a pain in persistent environments like mod_perl.

list (1.0.1) *

No documentation. Covers some of the same ground as List::Util.

Module-Info (0.21) *****

Handy little module for getting meta-data on a module (version, etc.)

WWW-Mechanize (0.58) *****

Really excellent tool. I find it invaluable for writing acceptance tests for web based applications.

My only (minor) quibble is the lack of support for multiple submit buttons with the same name (see, which can occasionally be annoying.

Template-Toolkit (2.10) *****

Powerful enough to get the job done. Simple enough not to get in your way. Very easy to customise. My favourite templating system.

Test-Simple (0.47) *****

The foundation of all recent Perl test libraries. Simple. Flexible. Nice design. Everybody should use it.