| CPAN::Mirrors(3pm) | Perl Programmers Reference Guide | CPAN::Mirrors(3pm) |
CPAN::Mirrors - Get CPAN mirror information and select a fast one
use CPAN::Mirrors;
my $mirrors = CPAN::Mirrors->new( $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\n", $m->hostname, $m->rtt
};
$mirrors->get_mirrors_timings( \@mirrors, $seen, $callback, %args );
@mirrors = sort { $a->rtt <=> $b->rtt } @mirrors;
print "Best mirrors are ", map( { $_->rtt } @mirrors[0..3] ), "\n";
You can specify a single continent or an array reference of continents.
Arguments
how_many - the number of mirrors to return. Default: 1
callback - a callback for find_best_continents
verbose - true or false on all the whining and moaning. Default: false
continents - an array ref of the continents to check
external_ping - if true, use external ping via Net::Ping::External. Default: false
If you don't specify the continents, "best_mirrors" calls "find_best_continents" to get the list of continents to check.
If you don't have Net::Ping v2.13 or later, needed for timings, this returns the default mirror.
"external_ping" should be set and then "Net::Ping::External" needs to be installed, if the local network has a transparent proxy.
"MIRROR_LIST" is an anonymous array of "CPAN::Mirrored::By" objects to ping.
The optional argument "SEEN" is a hash reference used to track the mirrors you've already pinged.
The optional argument "CALLBACK" is a subroutine reference to call after each ping. It gets the "CPAN::Mirrored::By" object after each ping.
Arguments:
n - the number of hosts to ping for each continent. Default: 3
seen - a hashref of cached hostname ping times
verbose - true or false for noisy or quiet. Default: false
callback - a subroutine to run after each ping.
ping_cache_limit - how long, in seconds, to reuse previous ping times.
Default: 1 day
The "seen" hash has hostnames as keys and anonymous arrays as values. The anonymous array is a triplet of a "CPAN::Mirrored::By" object, a ping time, and the epoch time for the measurement.
The callback subroutine gets the "CPAN::Mirrored::By" object, the ping time, and measurement time (the same things in the "seen" hashref) as arguments. "find_best_continents" doesn't care what the callback does and ignores the return value.
With a low value for "N", a single mirror might skew the results enough to choose a worse continent. If you have that problem, try a larger value.
Andreas Koenig "<andk@cpan.org>", David Golden "<dagolden@cpan.org>", brian d foy "<bdfoy@cpan.org>"
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
| 2022-02-19 | perl v5.34.1 |