Ich nehme immer lieber LWP::UserAgent:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use strict;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request::Common;
use Archive::Zip;
use FindBin;
my $url = 'http://www.nummer.de/cgi-bin/nummer-daten?Aktion=Liste&Dokumenttyp=Beitraege';
my $zips = 'http://www.nummer.de/cgi-bin/nummer-daten';
my $verzeichnis = $FindBin::Bin . '/unpacked/';
mkdir $verzeichnis unless -d $verzeichnis;
my $zahlen = LWP::Simple::get($url);
foreach my $zahl (split /\r?\n/,$zahlen) {
my $ua = LWP::UserAgent->new(agent => 'myua',timeout => 120);
my $request = $ua->request(GET $zips,[
'Aktion' => 'Einzel',
'Dokumenttyp' => 'Beitraege',
'Dokumentkennung' => $zahl
]);
if ($request->is_success()) {
my $filename = $verzeichnis . $zahl . '.zip';
open ZIP,'>',$filename or die $!;
binmode ZIP;
print ZIP $request->content();
close ZIP;
my $zip = Archive::Zip->new($filename) or die $!;
-d $verzeichnis . $zahl ? next : mkdir $verzeichnis . $zahl;
$zip->extractTree($verzeichnis . $zahl);
unlink $filename;
}#if
}#for
untested
Gruß Alex\n\n
<!--EDIT|format_c|1108147735-->