Weiter Zurück Inhalt

4. Perl-basierte WWW-Clients selbst programmiert

Perl ist vermutlich die populärste Sprache für WWW-Anwendungen. Es wird serverseitig für die Erzeugung von dynamischen HTML-Inhalten benutzt, ist einfach zu programmieren und auf vielen Rechnerplattformen verfügbar.

4.1 Perl und CGI: Ein minimales Programmbeispiel

In aktuellen Versionen von Perl ist das CGI-Modul bereits standardmäßig enthalten und muß nicht mehr installiert werden. Das einfachste CGI-Programm unter Perl, das vollständigen HTML-Code erzeugt, sieht so aus:


#!/usr/bin/perl

use CGI;                                # Einbinden des CGI-Moduls

$query = new CGI;                       # Definieren eines CGI-Objekts

print $query->header;                   # HTML-Header erzeugen
print $query->start_html('Titel');      # HTML-Titel erzeugen

print q{ HTML-Text };                   # HTML-Text ausgeben

print $query->end_html;                 # HTML-Footer erzeugen

Dieses Beispiel zeigt die objektorientierte Programmierschnittstelle des CGI-Moduls; in gleicher Weise wie die Methoden start_html() und end_html() werden auch Methoden für Formulare bereitgestellt. Die extrem detaillierte manpage CGI.3 gibt hierzu umfassende Auskunft. CGI-Programme kann man auch am Kommandoprompt testen, ohne daß ein http-Server läuft. Wenn man das obige Programm ausführt, wird der folgende Text in die Standardausgabe ausgegeben:


$ chmod 755 CGI.cgi
$ ./CGI.cgi
(offline mode: enter name=value pairs on standard input)

Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD><TITLE>Titel</TITLE>
</HEAD><BODY> HTML-Text </BODY></HTML>

4.2 Perl und die Datenbankschnittstelle DBI/DBD

Für die Kürzel DBI und DBD gibt es mindestens zwei Auslegungen: DBI steht für Data Base Interface oder Data Base Independent, wohingegen DBD für Data Base Driver oder Data Base Dependent steht. Beide Auflösungen treffen den Kern der Sache: Mit DBI steht Perl eine generalisierte Schnittstelle zu Datenbanken zur Verfügung, die unabhängig von der verwendeten Datenbank immer gleiche generische Befehle bereitstellt, während die Umsetzung dieser Befehle auf ein konkretes Datenbankmodell im Modul DBD erfolgt, das nach dem Datenbankhersteller benannt wird, nach dessen Spezifikation die Schnittstelle ausgelegt ist.

Installation der Datenbankschnittstelle DBI/DBD

Der Installationsprozeß aller erforderlichen Datenbankmodule setzt eine Reihe von Paketen voraus, die man sich eventuell vom zentralen Archiv CPAN besorgen muß:

Bevor diese Pakete installiert werden, muß auf jeden Fall mindestens ein Datenbankserver gestartet werden. Die Perl-Pakete werden dann immer nach dem gleichen Schema installiert:

Wenn alles funktioniert, kann das ausgepackte Archiv gelöscht werden, es wird für die weitere Arbeit nicht mehr benötigt.

Es wird darauf hingewiesen, daß die richtige Reihenfolge, in der die Pakete installiert werden, für das Gelingen der Installation entscheidend ist!

4.3 Perl und DBI: Minimale Programmbeispiele

Das folgende Beispiel gibt eine Liste aller auf localhost verfügbaren Datenbanken aus:


#!/usr/bin/perl -w

use DBI;                                        # Einbinden des DBI-Moduls

my $driver = DBI->install_driver('mysql');      # Treiber installieren

my @dbases =
        $driver->func('localhost','_ListDBs');  # Datenbanken identifizieren

foreach $db (@dbases) {print "- $db -\n"};      # Liste ausgeben

# $dbh->disconnect;                             # Abmelden von der Datenbank

Eine bestimmte Datenbank kann mit der connect-Methode geöffnet werden:


#!/usr/bin/perl -w

use DBI;                                        # Einbinden des DBI-Moduls

                                                # Verbinden mit der 
$dbh = DBI->connect("DBI:mysql:Kurs",           # Datenbank 'Kurs'
                        undef,                  # User nicht definiert
                        undef,                  # Passwort nicht definiert
                        {RaiseError => 1,       # Fehlerbehandlungs-
                         AutoCommit => 0});     # parameter

$dbh->disconnect;                               # Abmelden von der Datenbank


Weiter Zurück Inhalt