use strict;
use warnings;
use CPAN::Mirrors;
use Data::Dumper;
my $mirrors = CPAN::Mirrors->new;
my $mirrored_by_file = '/Volumes/Atlas/CPAN/MIRRORED.BY';
$mirrors->parse_mirrored_by( $mirrored_by_file );
my $seen = {};
my $best_continent = $mirrors->find_best_continents( { seen => $seen } );
my @mirrors = $mirrors->get_mirrors_by_continents( $best_continent );
my $callback = sub {
my( $m ) = @_;
printf "%s = %s ms\n", $m->hostname, 1000 * $m->rtt
};
my @sorted_mirrors = $mirrors->get_mirrors_timings( \@mirrors, $seen, $callback );
print "Best mirrors are ",
join ' ', map( $_->hostname, @sorted_mirrors[0..3] ),
"\n";