dwww Home | Manual pages | Find package

CPAN::Mirrors(3perl)    Perl Programmers Reference Guide   CPAN::Mirrors(3perl)

NAME
       CPAN::Mirrors - Get CPAN mirror information and select a fast one

SYNOPSIS
           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";

DESCRIPTION
       new( LOCAL_FILE_NAME )
           Create  a  new  CPAN::Mirrors object from LOCAL_FILE_NAME. This file
           should look like that in http://www.cpan.org/MIRRORED.BY .

       continents()
           Return a list of continents based on those defined in MIRRORED.BY.

       countries( [CONTINENTS] )
           Return a list of countries based on those  defined  in  MIRRORED.BY.
           It only returns countries for the continents you specify (as defined
           in  "continents").  If  you don't specify any continents, it returns
           all of the countries listed in MIRRORED.BY.

       mirrors( [COUNTRIES] )
           Return a list of mirrors based on those defined in MIRRORED.BY.   It
           only  returns  mirrors  for the countries you specify (as defined in
           "countries"). If you don't specify any countries, it returns all  of
           the mirrors listed in MIRRORED.BY.

       get_mirrors_by_countries( [COUNTRIES] )
           A more sensible synonym for mirrors.

       get_mirrors_by_continents( [CONTINENTS] )
           Return  a  list of mirrors for all of continents you specify. If you
           don't specify any continents, it returns all of the mirrors.

           You can  specify  a  single  continent  or  an  array  reference  of
           continents.

       get_countries_by_continents( [CONTINENTS] )
           A more sensible synonym for countries.

       default_mirror
           Returns  the default mirror, http://www.cpan.org/ . This mirror uses
           dynamic DNS to give a close mirror.

       best_mirrors
           "best_mirrors" checks for the best mirrors  based  on  the  list  of
           continents you pass, or, without that, all continents, as defined by
           "CPAN::Mirrored::By".  It  pings  each  mirror,  up  to the value of
           "how_many". In list context, it returns up  to  "how_many"  mirrors.
           In scalar context, it returns the single best mirror.

           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.

       get_n_random_mirrors_by_continents( N, [CONTINENTS] )
           Returns up to N random mirrors for the specified continents. Specify
           the continents as an array reference.

       get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );
           Pings  the  listed  mirrors  and returns a list of mirrors sorted in
           ascending ping times.

           "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.

       find_best_continents( HASH_REF );
           "find_best_continents" goes through each  continent  and  pings  "N"
           random  mirrors  on that continent. It then orders the continents by
           ascending median ping time. In list context, it returns the  ordered
           list of continent. In scalar context, it returns the same list as an
           anonymous array.

           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.

AUTHOR
       Andreas Koenig "<andk@cpan.org>",  David  Golden  "<dagolden@cpan.org>",
       brian d foy "<bdfoy@cpan.org>"

LICENSE
       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>

perl v5.40.1                       2026-08-30              CPAN::Mirrors(3perl)

Generated by dwww version 1.16 on Sat Oct 3 07:43:30 CEST 2026.