use strict;
use warnings;
use File::Spec;
use autodie;
use CPAN::DistnameInfo;
my $dir = shift or die;
die unless -d $dir;
my %data;
opendir( my $DIR, $dir );
while( my $file = readdir $DIR ) {
next if $file =~ /^\./ or $file !~ /^perl.+(bz2|gz)$/;
my $abs = File::Spec->catfile( $dir, $file );
next unless -l $abs;
my $link = readlink $abs;
$link =~ s#^.*/authors/id/##;
my $d = CPAN::DistnameInfo->new( $link );
$data{ $d->version }->{ $d->extension} = $link;
}
my %v = map {
my @v = split(qr/[-._]0*/, $_);
$v[2] ||= 0;
$v[3] ||= 'Z';
($_ => sprintf '%d.%03d%03d-%s', @v)
} keys %data;
print "{\n";
foreach my $perl ( sort { $v{$a} cmp $v{$b} } keys %data ) {
print qq! "$perl" => {\n!;
print qq! "$_" => "!, $data{$perl}->{$_}, qq{",\n}
for sort keys %{ $data{$perl} };
print " },\n";
}
print "};\n";
exit 0;