#!/usr/bin/env perl # pmvers -- print out a module's version, if findable # tchrist@perl.com BEGIN { $^W = 1 } $errors = 0; for $module (@ARGV) { eval "local \$^W = 0; require $module"; if ($@) { $@ =~ s/at \(eval.*$//; warn "$0: $@"; $errors++; next; } print "$module: " if @ARGV > 1; if (defined($version = $module->VERSION())) { print "$version\n"; } else { $errors++; if (@ARGV > 1) { print "unknown version\n"; } else { warn "$0: unknown version for module `$module'\n"; } } } exit ($errors != 0); __END__ =head1 NAME pmvers - print out a module's version =head1 DESCRIPTION Given one or more module names, show the version number if present. If more than one argument is given, the name of the module will also be printed. Not all modules define version numbers, however. =head1 EXAMPLES $ pmvers CGI 2.46 $ pmvers IO::Socket Text::Parsewords IO::Socket: 1.25 Text::ParseWords: 3.1 $ oldperl -S pmvers CGI 2.42 $ filsperl -S pmvers CGI 2.46 $ pmvers Devel::Loaded pmvers: unknown version for module `Devel::Loaded' h=ead1 SEE ALSO pmdesc(1), pmpath(1), pmcat(1). =head1 AUTHORS and COPYRIGHTS Copyright (C) 1999 Tom Christiansen. Copyright (C) 2006-2008 Mark Leighton Fisher. This is free software; you can redistribute it and/or modify it under the terms of either: (a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or (b) the Perl "Artistic License". (This is the Perl 5 licensing scheme.) Please note this is a change from the original pmtools-1.00 (still available on CPAN), as pmtools-1.00 were licensed only under the Perl "Artistic License".