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. ;-)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.