use strict; use warnings; use PPM::Repositories; use Net::Ping; foreach my $repository (split(/[\r\n]/, `ppm rep`)) { next unless $repository =~ s/^\[[\d\ ]+\]\ (.*)$/$1/; system("ppm rep delete $repository > NUL") unless $repository =~ /activestate/i; } foreach my $repository (keys %Repositories) { my $domain = my $location = $Repositories{$repository}->{location}; next unless $domain =~ s|^\s*http://([^/]+)/.*$|$1|; foreach (qw/tcp udp icmp stream syn external/) { next unless Net::Ping->new($_)->ping($domain); system("ppm repository add $repository $location > NUL"); last; } } print $/, `ppm rep`;