#!/usr/bin/perl
my
(
$latest
,
$want
);
if
(
my
$arg
=
shift
) {
if
(
$arg
eq
"latest"
) {
$latest
++;
}
elsif
(
$arg
=~ /^(-h|--help)$/) {
die
"Usage: $0 [version|latest]\n"
;
}
else
{
$want
=
$arg
;
}
}
my
$cpan
= CPAN::Perl::Releases::MetaCPAN->new;
my
@releases
=
map
{
my
$name
=
$_
->{name};
$name
=~ s/^perl-?//;
my
$url
=
$_
->{download_url};
{
name
=>
$name
,
url
=>
$url
};
}
@{
$cpan
->get};
if
(
$latest
) {
my
$numify
=
sub
{
my
$name
=
shift
;
if
(
my
(
$v1
,
$v2
) =
$name
=~ /^5\.(\d+)\.(\d+)$/) {
if
(
$v1
% 2 == 0) {
return
0+
sprintf
"%03d%03d"
,
$v1
,
$v2
;
}
}
return
;
};
my
(
$latest
) =
map
{
$_
->[0] }
sort
{
$b
->[1] <=>
$a
->[1] }
map
{
my
$n
=
$numify
->(
$_
->{name});
$n
? [
$_
,
$n
] : () }
@releases
;
print
"$latest->{name}\t$latest->{url}\n"
;
}
elsif
(
$want
) {
for
my
$r
(
@releases
) {
if
(
$r
->{name} eq
$want
) {
print
$r
->{url},
"\n"
;
exit
;
}
}
exit
1;
}
else
{
for
my
$r
(
@releases
) {
print
"$r->{name}\t$r->{url}\n"
;
}
}