Reviews by



Module-Version (0.03)

pmvers from the distribution pmtools already does this.

Test-Slow (0.03)

Same idea as Test::Less, only much more limited and with worse execution.

Metadata for Test::Slow are inside the test files, requiring the programmer to change the existing test files — metadata for Test::Less are stored in a seperate file.

Test::Slow has only one kind of metadata — Test::Less provides arbitrary metadata.

Test::Slow is controlled with an environment variable only — Test::Less has an extensible front-end for prove.

getaddress (0.03)

Duplicates IP::QQWry.

Test-ExistsExecutable (0.01)

Test::ExistsExecutable is similar to File::Which::which or Module::Install::requires_external_bin, but much less useful because it only deals with fully qualified paths.

String-Formatter (0.093221)

This is the generalisation of the sprintf concept. Highly recommended if you ever wished you could extend sprintf.

PNI_PROJECT (.20091111)

This is a Tk application that is packaged in a weird way. This is how you start it: perl -MPNI -e'PNI::StartUp'
You can then drop and move boxes with the mouse on a canvas. The whole purpose is unclear. No documentation. All in all makes a very unfinished impression.

Pod-Autopod (1.08)

This modules blurs the important distinction between comments and documentation by forcing the programmer to shun the existing POD toolchain completely and start writing documentation in comments. The basic idea is interesting, but the execution poor. For instance, look at the module's source itself: all of the documentation is senselessly duplicated. It would have been better to extend POD in some way to gain the method annonation feature.

File-TinyLock (1.01)

Distribution name is misleading, the module deals with singleton processes/pid files. Of course, File::Pid already does all that.

String-StringLight (0.02)

A collection of unrelated trivial functions. trim() is the same as String::Strip::StripLTSpace, only slow. trimArray() is a pointless specialisation, any method taking a list can also take a list of just one element, making the trim function superfluous. space() is the same as q( ) x $NUM, only slow. left() is the same as sprintf "%-$NUMs", only slow.

No parameter checks at all, I can see no reason to prefer this module over previous art or the built-ins.

Money-Chinese (1.10)

Yet another module handling dàxiě/Chinese financial numbers. Limited functionality compared with Lingua::ZH::Currency::UpperCase and Lingua::ZH::Numbers::Currency. Only deals with GB18030 encoded strings which is very cumbersome if you do not happen to run Perl on the Chinese version of Windows.

simplestore (0.1)

An ad-hoc serialisation format like YAML or JSON, except unspecified and with far less functionality.

VCS-Which (v0.1.0)

Does roughly the same as HARDAKER/tor which precedes VCS-Which.

PerlIO-fse (0.02) *****

Awesome! Finally proper support for Unicode file names on Windows without having to jump through ridiculous Win32 API hoops.

Lingua-CJK-Tokenizer (0.01)

Depends on a veritably ancient (circa era 2000) unmaintained library that is only available for Debian anymore. Even there, compilation bombs out with relocation errors. Unusable, alas.

Debug-STDERR (0.00003)

The distribution name is misleading. This is actually a logging module. As such, it does its job, but the functionality is very limited and inflexible. In my opinion Log-Log4perl should be used instead.

File-Class (0.0.1)

Like Path::Class, only with much less functionality.

Mail-Lite (0.1005)

Incompatible with Email::Abstract. The word Lite in the distribution name seems to refer to the amount of documentation accompanying it - there is only very little. It becomes more valuable if you can read Russian because the test cases and some comments are written that way. Ships with some predefined rules but cannot compare with Email::Filter which has the superior interface.

Ed2k_link (20090428)

I find it regrettable that there is no compatibility with the URI module.

Hash-Search (0.03)

my %fruits = qw(one orange two banana three apple four pear five pineapple);
my %results = map { $_ => $fruits{$_} } grep { /e$/ } keys %fruits;
my $count = keys %results;

This is all the module does, but with no discernable advantage over doing it with just the built-ins. The method names repeat the class type unnecessarily and therefore are longer to type than need be. The documentation specifies that the first parameter to hash_search is a regular expression, but the examples show a string type scalar instead. Since there is no type check for this parameter and it is simply interpolated by the m operator, this only works by coincidence.

Script-isAperlScript (0.0.0) *

This module offers a microscopic subset of the functionality of file(1)/magic(5) (CPAN already has more than enough modules dealing with that topic, e.g. File-LibMagic). As of its initial release, it does not deal with hashbangs delegating an interpreter through env(1), nor would it recognise scripts installed by a custom Perl installation or by CPAN that clearly refer to the perl interpreter that is also sitting in the path.

The interface is exported function, yet returns exit codes like a shell program and CORE::system. I thought everyone knew by 2010 that this is a design mistake not to be repeated, meaning 0 stands for okay and 1 stands for not okay. The author is evidently aware of that because he takes care to explicitely comment this confusing behaviour in the synopsis.

Given this interface, the module's functionality would have benefitted from being expressed as a command line script alone. However, since it is in module/function form, returning error codes instead of exceptions IMO is doing it the wrong way, not very perlish.

The code does not follow the usual identifier naming conventions, but is straightforward without unnecessary embellishments and therefore easy to comprehend. Yet one cannot help but wonder how an accomplished CPAN author does not know how to avoid code repetition by iterating over a list, or to use alternative delimiters for the m operator in order to make RE more readable.

One star to dissuade people from using: I cannot see anything good coming of this; any further effort should be spent improving the magic(5) database.