#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;
my $ppmserverurl = "http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/";
my $ppmlocalfolder = "d:/ppm_mirror/";
die "[$ppmlocalfolder] does not exists." unless $ppmlocalfolder;
my $header = qq~
Index of /PPMPackages/zips/8xx-builds-only/Windows
Index of /PPMPackages/zips/8xx-builds-only/Windows
~;
my $page = get($ppmserverurl);
$page =~ s!^$header!!;
$page =~ s!$footer$!!;
my @lines = split /\r?\n/, $page;
my $ua = LWP::UserAgent->new(env_proxy => 1, keep_alive => 1, timeout => 30);
foreach my $line (@lines)
{
chomp $line;
next unless $line;
$line =~ m! (.*)!i;
my ($file, $desc) = ($1, $2);
next unless $file and $desc;
my $source = "$ppmserverurl$file";
my $dest = "$ppmlocalfolder$file";
print "Mirror [$source] -> [$dest]\n";
$ua->mirror($source, $dest);
}