#!/bin/sh
mirrorlist=ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY

if [ -x /usr/bin/curl ]; then
    get="curl -s"
elif [ -x /usr/bin/wget ]; then
    get="wget -O - -q"
else
    echo "Can't find curl or wget"
    exit 1
fi

mynetselect () {
xargs netselect -vv \
    | fgrep -v ' 0% ok' \
    | sort -n -t\[ +1 \
    | head -20
}

$get $mirrorlist \
    | awk -F: '/^[a-zA-Z0-9][a-zA-Z0-9.-]*:/ {print $1}' \
    | mynetselect
