#!/usr/bin/perl use strict; use base 'LEOCHARRE::CLI'; use WWW::CPAN; use Smart::Comments '###'; my $o = gopts('V'); @ARGV or die('missing arg'); my $cpan = WWW::CPAN->new; my @v = map { get_cpan_version($_) } @ARGV; print join("\n",@v); sub usage { return qq{$0 - get module versions from cpan OPTION FLAGS -V verbose, print meta info to stdout SEE ALSO LEOCHARRE::Dev }; } sub get_cpan_version { my $dist = shift; $dist or die('missing arg'); my $distname = _arg2distname($dist) or die; my $meta = $cpan->fetch_distmeta({ dist => $distname}) or print STDERR "cant fetch dist meta for $distname\n" and return ''; if( $o->{V} ){ ### $meta } my $version = $meta->{version} or print STDERR "cant get version number for $distname\n" and return ''; return $version; } sub _arg2distname { my $arg = shift; my $namechars = qr/[a-zA-Z0-9]/; my $distchars = qr/[a-zA-Z0-9\:\-\.]/; $arg=~/^$distchars+$/ or die("argument $arg doesn't look like a distro name"); $arg=~s/\:\:/\-/g; return $arg; }