Also ich hab mich ja hier schon mal darüber ausgelassen, wie man bei LWP::Simple das timeout von LWP::UserAgent einbindet. Grund damals war, daß ich per head die Kopfdaten, wie zum Beispiel die Länge des Dokumentes haben wollte.
Nun, etwas Zeit ist vergangen, und inzwischen hab ich festgestellt, daß manche Server anonyme Anfragen blocken. Außerdem wäre es sinnig, den Statuscode zu kriegen, wenn z.B die Seite down ist.
Ich hab da einiges gesucht bei Google über LWP::Simple und bin zu keinem Ergebnis gekommen.
Wohl aber mit LWP::UserAgent!
use LWP::UserAgent;
$url="http://www.testseite.de"; my $ua = LWP::UserAgent->new();
$ua->timeout(20);
$ua->agent('Mozilla/4.7 [en] (WinNT; I) [Netscape]'); my $request = HTTP::Request->new('HEAD', $url);
my $status=$response->code;
#print "HTTP-Status-Antwort-Header as string: ",$response->headers_as_string() , "\n"; my $document_length = $response->content_length; my $modified_time= $response->last_modified;
print <<EOF;
Status: $status
Datei-Groesse: $document_length
letzte Änderung: $modified_time
EOF
Also, wie gehts?
Zu Beginn wird der UserAgent geladen. Der UserAgent ist übrigens so etwas wie ein simulierter Webbrowser in Perl, der all das machen kann, was man auch in einem echten Webbrowser machen kann.
Per timeout von 20 Sekunden legt man fest, daß nach 20 Sekunden abgebrochen werden soll.
Per agent legt man fest, daß Perl sich als zum Beispiel Mozilla/4.7 [en] (WinNT; I) [Netscape] ausgibt. Dies verhindert, daß manche Webseiten den Zugriff blockieren.
Schließlich bereitet man per HTTP::Request->new('HEAD', $url); den Zugriff abschließend vor und führt ihn per $ua->request($request); durch.
In $response erhält man nun die Daten, die die Seite zurückgibt, und zwar als einen Zeiger auf ein HTTP::Headers-Objekt. Sehr technisch das Ganze, ich weiß...
Auf jeden Fall kann man jetzt ganz einfach per
my $status=$response->code; my $document_length = $response->content_length; my $modified_time= $response->last_modified;
zum Beispiel den Statuscode der Seite (404, 200 oder sonstwas), die Dokumentlänge und die letzte Änderungszeit am Dokument erfahren.
Interessante weiter Head-Elemente, die der fremde Server zurückgibt:
$response->expires
Gibt an, wann ein Dokument als verfallen gilt
$response->content_type
Gibt die Art des Inhaltes der fremden Seite zurück, z.B. text/hml.
$response->title
Den Title des Dokumentes zwischen <title> und </title>
$response->server
Informationen über den fremden Server