Tja, wenn ich dessen Script zusammenpicke, dann klappt es, bei mir allerdings nicht, wobei ich mein Script nocheinmal etwas umgeschrieben habe. Was stimmt denn an jener Subroutine nicht, dass der Redirect nicht durchgeführt wird?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub check {
my ($url) = shift;
$url =~ m{http://([^\:|/]*)}s;
my $host = $1;
my $req = HTTP::Request->new(HEAD => $url);
$req->header('Host' => $host);
$req->header('If-Modified-Since' => time2str($mtime));
my $resp;
$resp = $ua->request($req) or warn "Response fuer $url fehlgeschlagen: ",$resp->status_line,"\n";
print $resp->is_success;
if(! $resp->is_success and $resp->code == RC_NOT_MODIFIED) {
print "$url wurde seit ",time2str($mtime)," nicht geaendert.\n";
} elsif (! $resp->is_success) {
print $url, " => ", $resp->status_line, "\n";
} elsif($resp->previous and $resp->previous->is_redirect) {
check($resp->request->url);
} else {
print "$url wurde geaendert!\n";
}
}
Ganz im Gegensatz dazu klappt eben
sub check_url { # given an absolute URL
my $url = $_[0];
my $resp = $browser->head($url);
if(!$resp->is_success) {
print $url, "\n => ", $resp->status_line, "\n";
} elsif($resp->previous and $resp->previous->is_redirect) {
check_url($resp->request->url);
# print "## Moved $url\n## => ", $resp->request->url, "\n";
} else {
print "## OK: $url\n";
}
}
\n\n
<!--EDIT|Johannes|1092360025-->