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. ;-)
|