The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;
use feature 'say';

use File::Find;
use Path::Class;

#-----------------------------------------------------------------------------

# Copyright 2013 Jeffrey Ryan Thalhammer

#-----------------------------------------------------------------------------

die "Must specify a CPAN directory\n" if not @ARGV;

my $cpan_dir   = dir(shift);
my $search_dir = $cpan_dir->subdir( qw(authors id) );

-e $search_dir or die "$cpan_dir does not look like a CPAN\n"; 

#-----------------------------------------------------------------------------

my @dists;
my $cb = sub {push @dists, $_ if /[.](gz|tgz|zip|bz2)$/i and not /perl/ and not /BadExample/};
File::Find::find( {no_chdir => 1, wanted => $cb}, $search_dir->stringify);
@dists = map {$_->[0]} sort {$a->[1] <=> $b->[1]} map { [$_ => (stat $_)[9]] } @dists;
say s|^.*/authors/id/./../||r for @dists;

__END__