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 |