On 7/12/06, Gabor Szabo <[EMAIL PROTECTED]> wrote:
While checking if the versions of all the modules are as
required in our installation I am using the following one liner to
fetch the version numbers.
perl -MModule -e'print $Module::VERSION'
This one-liner doesn't work all the time in modules with deep magic
(filters and modules which do strange/heavy things in BEGIN blocks,
POD-only modules and the like). A (text-based) alternative is the
ExtUtils::MakeMaker approach, which goes as follows:
perl -MExtUtils::MakeMaker -e 'print MM->parse_version(shift)'
/usr/lib/perl5/site_perl/5.8/Module.pm
Unfortunately, it depends on knowing where the .pm file is. But that
can be arranged.
Some of the modules print extra error messages and some print
only error messages.
I have sent e-mail to the respective module authors reporting this
issue but I wonder if it would this a good practice in the genric case.
I think that having version numbers is a good practice. Although to
demand they may be retrieved with "perl -MModule -e 'print
$Module::VERSION'" may be too much - don't forget that it means the
module should compile and certain modules may demand a bunch of
environment settings to do it (the right libraries, some bit of
configuration, etc.)
Is there a Test module that test just the above?
Is the a CPANST score one can get if all the modules in a distro
provide the correct version information and if they don't print anything
else to STDOUT or STDERR.
I think a test to check version numbers are provided is enough.
Another issue is that use_ok() (or some variant) works too (in a
silent fashion). As a matter of fact, the absence of version numbers
is very common for modules which are not the ones that provide the
version number for a CPAN distribution - you may see this at many
places: core modules and many others. For example, trying the YAML::*
modules installed in a Cygwin machine with which_pm (from Module-Which
distribution) gives me (module name, version, location):
$ which_pm YAML:: --p5p
YAML::Syck 0.45 at ${installsitearch}/
YAML::Loader::Syck undef at ${installsitearch}/
YAML::Dumper::Syck undef at ${installsitearch}/
YAML::Transfer undef at ${installsitelib}/
YAML::Family undef at ${installsitelib}/
YAML::Node undef at ${installsitelib}/
YAML::Marshall undef at ${installsitelib}/
YAML::Tag undef at ${installsitelib}/
YAML::Base undef at ${installsitelib}/
YAML::Types undef at ${installsitelib}/
YAML::Loader undef at ${installsitelib}/
YAML::Error undef at ${installsitelib}/
YAML::Dumper undef at ${installsitelib}/
YAML::Tiny 0.05 at ${installsitelib}/
YAML::Loader::Base undef at ${installsitelib}/
YAML::Dumper::Base undef at ${installsitelib}/
from Config:
installsitearch: /usr/lib/perl5/site_perl/5.8/cygwin
installsitelib: /usr/lib/perl5/site_perl/5.8
Adriano.