Reviews by Dee Newcum



Dancer-Plugin-Auth-Htpasswd (0.01) ****

Underneath the hood, it really should set request->env->{REMOTE_USER} automatically. This would allow end users to access the login ID via request->user. Other than that niggle, it was straightforward to use.

Net-OpenSSH (0.52) *****

This is an underappreciated module.

I was surprised to find it supported several advanced features such as connection sharing and $SSH_ASKPASS. It may take me a while to use all of the functionality it provides.

The dependency on local OpenSSH being installed is a bit of downside, but it's a tradeoff worth taking since that gives you several really useful features.

CPAN-Mini (1.111007) *****

Want to do a regexp search of all code and documentation on CPAN? Now you can! Incredibly useful.

Acme-Test (0.03) *****

My favorite Acme:: module so far. Storing state in your source file totally violates the principle of least astonishment. :)

As of v0.02, it leaves the updated script as 'chmod -x'. Is this a security feature? Either way, the documentation should mention it. The workaround is to do this after the last ->set() call.

chmod 0755, $0;

Apache-ParseLog (1.02) *

The module didn't have the ability to do some key things I needed it to (use a very complex httpd.conf, or otherwise be able to directly specify the location of a custom log file; be able to parse only the tail end of the log file rather than the whole two year's worth).

I won't complain about free code, but as Peter mentioned, the author didn't seem to be very familiar with using all the features that Perl provides (customlogDefined()+customlog() is a poignant example... both functions could be replaced with a simple hash lookup).

Though here's a workaround for parsing a combined log from an arbitrary path if you poke inside $self:

$parselog->{customlog}{location}{combined} = '/path/to/the.log';
$parselog->{customlog}{nickname} = [qw[ combined ]];

For alternatives, see:
- Logfile::Access
- the Regexp::Log:: set of modules
- HTTPD::Log::Filter
- AWStats' (search for "Start Update process"... the code isn't very modular though)

IO-All (0.13) *****

I don't think a day has gone by since I've discovered this module that I haven't thought about using it somewhere. I seriously hope this becomes part of the standard distribution, it's so damned useful.

Argv (1.12) *****

If you're trying to write a robust script that uses user-provided filenames, filenames that possibly include quotes/spaces/whatnot, and you pass those on to other utilties, you know that it's important to call system and exec with separate (pre-parsed) arguments.

Unfortunately Windows doesn't provide for this functionality, so this module provides the necessary shell-quoting to make windows as functional as unix. It's really indespensible for cross-platform file utilities.