#!/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); }