Einführung in Perl 5
Objekte
Viele Leute schrecken vor den praktischen Perl5-Modulen zurück, weil diese mit
Objekten zu tun haben. Und das ist ja schon mal verdächtig und tönt nach etwelchen
Schwierigkeiten ohne entsprechend nützlich zu sein.
Auf der anderen Seite führen gewisse Probleme automatisch hin zu Objekten. Das macht
den Leuten Angst. Unnötigerweise.
Es ist ein riesiger Unterschied genügend über OO-Programmierung zu wissen, um Module
zu verwenden , oder um Module selber entwerfen und implementieren zu können. Man
befürchtet das letztere können zu müssen um Zugang zum ersteren zu erhalten. Das ist
weit weg von der Realität.
Man muss nicht viel wissen um Module verwenden zu können. Man lädt einfach die
Library und ruft die dokumentierten "Konstruktoren" auf.
"Konstruktoren" sind die Dinge, welche neue Objekte erzeugen. Häufig werden sie
new genannt.
In Perl5 werden ein oder zwei neue Konzepte verwendet, welche Sie vielleicht bisher
noch nie gesehen haben:
- Die Anweisung use Module lädt ein Modul mit dem Namen Module.pm (zur
Kompilationszeit) und fügt die exportierten Namen in Ihren Namensraum ein. Die Anweisung require
Module lädt das Modul ebenfalls, aber erst zur Laufzeit und importiert keine Namen.
- Der Pfeil-Operator für die Dereferenzierung -> bedeutet ein Aufruf einer
Methode (Subroutine) eines Objektes. In OO-Slang sagt man auch 'dem Objekt eine Message
senden'. Dabei braucht man keinerlei Kenntnisse über den Aufbau des Objektes. Es ist
einfach eine Black Box, welche Subroutinen zur Verfügung stellt. Das ist alles.
- Die folgenden zwei Zeilen sind aequivalent. Die zweite Zeile ist jedoch syntaktisch ein
wenig klarer:
$obj = new CGI;
$obj = CGI->new();
Wie jeder andere Unterprogrammaufruf, kann eine Methode irgend etwas zurückgeben, sogar
ein anderes Objekt.
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("Mozilla/5.0PlatinumB3"); # hee :-)
$req = new HTTP::Request GET => 'http://perl.com/perl/';
$req->header('Accept' => 'text/html');
# send request
$result = $ua->request($req);
# check the outcome
if ($result->is_success) {
print $result->content;
} else {
print "Error: " . $result->code
. " " . $result->message;
}
Das wär's. Das ist alles. Mehr braucht man nicht um Module in Perl zu verwenden.
Hier sind noch ein paar Beispiele für den Gebrauch von perl WWW-Modulen:
use CGI;
$req = CGI->new();
use CGI::Imagemap;
$map = CGI::Imagemap->new();
use HTML::Parse;
$html = parse_htmlfile("test.html");
use URI::URL;
$url = URI::URL->new('gisle.gif','http://www.com/%7Euser');
use HTTP::Request;
$hreq = HTTP::Request->new('GET', 'http://www.perl.com/');
Ich glaube nicht, dass man ein Smalltalk- oder C++-Superguru sein muss, um mit diesen
Dingen umzugehen. Aber falls Sie wirklich mehr darüber lernen möchten, können
Sie die perlobj manpage konsultieren.
|