Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

dumpcpanurls: current configured CPAN mirror URLs

by Intrepid (Deacon)
on Aug 08, 2003 at 22:09 UTC ( #282325=snippet: print w/replies, xml ) Need Help??
Description: Provides a perl admin or user with the list (assuming CPAN.pm has been configured previously) of the mirror site URLs that will be queried when CPAN is next run.
Updated on November 7 2004
Updated on Mon, 25 Apr 2005 UTC: added url for netselect
#!/usr/bin/env perl
# "dumpcpanurls" - list the mirrors CPAN.pm is configured to try
$\=qq{\n};
use CPAN ;
CPAN::Config->load ;
print join qq{\n}, @{$CPAN::Config->{'urllist'}} ;

Same thing as a one-liner (*nix or MSwindoze):

perl -MCPAN -le "CPAN::Config->load; print join qq(\n)=> @{ \$CPAN::Co
+nfig->{urllist} }"
#                                                remove this^ escape f
+or windows shell

As a further (obvious) tip, note that this list can then be used as input into a pipeline, say to the ping(1) command, i.e.:

dumpcpanurls | perl -le 'do{s#^\w+p://([^/]+).*#$1#;print} for(<STDIN>
+)' \
  | xargs --max-args 1 ping -c 2
or to the netselect command if you have it:
dumpcpanurls | perl -le 'do{s#^\w+p://([^/]+).*#$1#;print} for(<STDIN>
+)' \
  | xargs netselect -vv
or doing this all in perl without the extra shell pipelines:
perl -MCPAN -le \
      'CPAN::Config->load;
       system "netselect", "-vv",
          map { s#^\w+p://([^/]+).*#$1# && $_ || ""}
                      @{ $CPAN::Config->{urllist} } '
or a little more conservatively:
     perl -MCPAN -le \
     'CPAN::Config->load;
      my @hosts;
      for (@{ $CPAN::Config->{urllist} }) {
         s#^\w+p://([^/]+).*#$1# &&
           push @hosts => $_          }
      system("netselect", "-vv", @hosts) if @hosts'

It's Perl. TMTOWTDI :-)


Finding out that the first host in the list is down before running CPAN can be a Good Thing. Finding out which mirror seems fastest is also nice. ;-)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://282325]
help
Chatterbox?
[ovedpo15]: But I don't know the length of the string. will it still work?
[ovedpo15]: The only thing I know is that there is a comma at the end and a value after that
[hippo]: Try it and see. Your computer won't explode.
[Corion]: length will tell you the length of a string.
[Corion]: But if you are parsing CSV, again, let me point to Text::CSV_XS, which you should use instead
[hippo]: +1 for Text::CSV_XS
[ovedpo15]: Im not allowed to use additional modules, so I can't use it. looking for a simple regex to do this task though..
[Corion]: Ah, so this is homework? Then most likely, you should review your course material closer. It would greatly surprise me if the course material wouldn't mention the topics that will be used in the homework...
[Corion]: I already showed you the simple regex to match the last part of a string without a comma in it

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2018-05-27 10:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?