Einführung in Perl5 ObjekteViele 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.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: