Reviews by Adriano Rodrigues Ferreira


Text-Extract-Word (0.03) *****

I found about this module on perlmonks

It just works. For a quick task to extract text from simple .doc files, it made reading the content of the Word files the easy part of the job.

DBIx-NamedBinding (0.01)

This comment is only to notice that there are two CPAN distributions that provide named placeholders for DBI too. They are:

DBIx-Placeholder-Named which supports named placeholders :name, does the right thing when things like "12:00" happens inside strings, and has a modified "execute" with a hash ref arg which does all primitive bindings and execute in one-shot.

Tao-DBI which inspired DBIx-Placeholder-Named, but which is not a DBI subclass by now, using delegation instead. It still does not implement the tokenizing trick of DBIx-Placeholder-Named to avoid confusions with ':' in strings. It has a bit more of API to make certain things easier: like supporting "$dbh->execute($arg)" (for one-named-placeholder SQL statements) besides "$dbh->execute(\%args)" and a few more details.

list_versions (0.03) ***

The scripts "module_info" (from Module-Info distribution) and "which_pm" (from Module-Which distribution) do similar jobs. However, an output format easy to be inserted into Makefile.PL/Build.PL is quite nice an idea.

Since 0.03 release, some initial packaging issues were cleared. So this dist is now ready to be installed from CPAN shell and provides the basic files one waits according to CPAN standards.

DateTime-Format-Flexible (0.02) **

The official datetime site: includes this module among the confusing modules that live in the DateTime:: namespace
and says:

DateTime::Format::Flexible - largely a subset of

DateTime::Format::Natural, and not recommended. Use

DateTime::Format::Natural instead (and submit patches

to improve its parsing if needed ;)

One of the greatest sins of these module IMHO is to not comply to the API convention of DateTime parsers which at least should implement the "parse_datetime" method. (The author makes this functionality available through a "build" class method, according to the synopsis.) Most of DateTime::Format:: modules implement this, which is good for interoperation with code which expects any well-behaved DateTime::Format. Of course, this is a small sin which can be easily remedied by the author.

Module-Mask (0.03)

This module functionality seems to be overlapping with *Devel::Hide* ( Maybe because *Devel::Hide* is not such an intuitive name as it should have been. Ah, and before *Devel::Hide*, *Test::Without::Module* ( already existed. (Not a good name also, because it is not a real testing module.)

Is-Kennitala (0.02)

The usual naming for modules that do validation of national ids is something like: Business::IS::(id name or acronym). This is so with Business::AU::TFN, Business::AU::ACN for Australian codes, Business::DK::CPR, Business::DK::CVR, Business::DK::PO for Danish ids, Business::BR::CPF, Business::BR::CNPJ for Brazilian codes. The advantage is that people used to this convention will intuitively find the module by looking for Business::IS modules.

Acme-DonMartin (0.09) *****

I enjoy very much this module maybe because I highly appreciate Don Martin's sense of humour. Others may prefer Acme::MetaSyntactic::batman if they like most Batman onomatopoeias, but to me Don Martin is matchless. If you want to have fun about people who say Perl is unreadable, give them a script encoded by this module and entice them to read it aloud.

IO-Infiles (0.01)

Haven't tried yet. But is it not what Inline::Files by Damian Conway does? Even the abstract looks similar.

Class-Phrasebook (0.88) *****

This is a useful module, which made much better some of my applications with access to SQL databases. Not mixing SQL and Perl enhances maintenance and evolution. Clean and nice. The rationale is described at the article

Sometimes this module tries to do too much wrt support for debugging and logging capabilities. I think investment in alternates book layouts would be more profitable.

Actually, Class::Phrasebook is being superseded by the new Barbie's Data::Phrasebook which supports INI and YAML formats and more in addition to XML. But this module has many strong points, like phrase interpolation, support for SQL specials, and is so easy to use.

Carp-Indeed (0.02)

Carp::Indeed really does

use Carp qw(verbose)

which makes carp() and croak() print stack backtraces, but do not affect warn() and die(). That's what the module does: brings stack backtraces to warn()ings and "deaths".

The documentation needs to be shortened and made more objective. But my main thrust was when I read, in Acme::JavaTrace, saper saying printing stack traces like Java is "more professional" than the Perl style. I couldn't help it: ten lines of codes aided by the Carp module were enough.

Kwiki-Comments (0.06)

I have been harsh reviewing the release 0.01 of this module: it had no documentation at all. It looks way better now.

YAML (0.35) ****

YAML is extremely nice or, to use author's words, really cool. It is much more legible than awkward XML and matches Perl way of life, without being bound to Perl only.

The module is really useful and gives us the immediate benefit of using YAML today. It has many problems and the version 0.50 is expected with anxiety. The interface is simple and obviously easy to use. Sometimes one misses it is not more powerful, for instance, LoadFile does not accept globs (which is a pity). I find that the two utility scripts C<ysh> and C<xyx> are handy tools.

I think YAML has a very promising role in Perl developments and other languages. One would not regret to experiment with YAML 0.35 today and even use it for production purposes. But we sure long for YAML 0.50 which probably will come with support to YAML specification 1.0 (not yet finished).