CGI und Perl
Description: Einführung in die CGI-Programmierung mit Perl im Internet. Vorkenntnisse der Programmierung sind notwendig.
Keywords: Multimedia WWW Internet Webdesign CGI Perl Programmierung

| ### Grundlagen CGI-Programmierung mit Perl von Prof. Jürgen Plate

## 1 Überblick über Perl

"In a nutshell, Perl is designed to make the easy jobs easy, without making the hard jobs impossible." [WALL 1996]

Ursprünglich konzipiert um große Mengen Text schnell zu durchsuchen und zu analysieren, wird Perl mittlerweile für nahezu alle denkbaren Zwecke eingesetzt. Daher kommt auch der Name "Practical Extraction and Report Language". Die Sprache wurde von einem einzelnen Entwickler entworfen, von Larry Wall.

Ein Grund warum sich diese Sprache solcher Beliebtheit erfreut, könnte sicherlich auch in der Tatsache zu finden sein, daß sich Perl vieler Elemente anderer Programmiersprachen bedient, z. B. C und der Tools sed und awk. Somit kann jemand, der diese Tools anwenden kann, ohne allzu viel Aufwand Perlprogramme schreiben. Des weiteren kommen viele alltägliche englische Wörter zum Einsatz, die dann auch noch oft genau das tun, was man erwarten würde. So steht dem C-Befehl "include" das für den "Amateur" vielleicht klarere "use" gegenüber.

Bei Perl handelt es sich um eine interpretierte Sprache, d. h. Perlprogramme werden als Bytecode kompiliert und zur Laufzeit interpretiert. Als Folge seiner Herkunft ist Perl besonders optimiert für das Arbeiten mit Texten (z. B. Durchsuchen, Ersetzen), es bietet jedoch auch wichtige Features für viele andere Gebiete, darunter Systemverwaltung, Prozeßsteuerung, Internetskriptprogrammierung oder objekt-orientiertes Programmieren. Perl ist Freeware und auf vielen Rechnerplattformen verfügbar, unter anderem UNIX/Linux, DOS/Windows und Mac OS. Perl ist

- für Erschließung, Aufbereitung und Neuformatierung beliebiger Texte,
- kann `C-Programme` sowie `sed-`, `awk-` und `shell-Scripten` ersetzen,
- überwindet alle Beschränkungen dieser Sprachen.

Spitzname: Pathologically Eclectic Rubbish Lister

Zunächst soll nun ein kurzer Blick auf die Geschichte von Perl geworfen werden. In den Anfängen war Perl von Larry Wall, einem Systemprogrammierer aus Amerika geschaffen worden, um eine große Anzahl an Textdateien nach bestimmten Inhalten zu durchsuchen und den Daten angepaßte Berichte zu erstellen und formatiert auszudrucken. Am 18. Oktober 1987 wurde Perl 1.0 über die Usenet-Gruppe "comp.sources" öffentlich zugänglich gemacht. Diese "freeware"-Software Mentalität hat Perl bis zum heutigen Tage beibehalten und somit sicherlich auch zum Erfolg beigetragen. 1988 und 1989 folgten dann Versionen 2.0 und 3.0 mit erweiterter Funktionalität. Zwischen 1991 und 1993 wurde die Version 4.0 veröffentlicht und bis zum Release 4.036 weiterentwickelt. Seit 1994 ist nun Version 5 erhältlich, im März 2000 als Release 5.6. Im Moment wird intensiv an Version 6 gearbeitet, die vermutlich erstmals einen Perlkompiler enthalten wird. Larry Wall selbst war und ist weiterhin aktiv an der Weiterentwicklung beteiligt, momentan als "Senior Software Developer" (seit 1996) bei O'Reilly & Associates, dem Software-Verlag in dem auch die wichtigsten Lehrbücher für Perl erschienen sind.

Ausführlichere Informationen zur Geschichte finden sich unter: http://www.perl.org/press/history.html.

Am bekanntesten ist die Verwendung als Programmiersprache für CGI-Skripte im WWW sowie im Bereich der UNIX-Systemadministration. Aber auch für viele andere Aufgaben hat sich Perl bewährt:

- Datenbankmanipulation,
- Text- und Dokumentenverarbeitung,
- Datenextraktion und -reduktion,
- Netzwerkadministration,
- Filesystemmanipulation,
- sicherheitsorientiertes Programmieren,
- WWW-basiertes Informationsmanagement,
- objekt-orientierte und funktionale Programmierung,
- ...

Perl wurde von von Beginn an als Mischung zwischen Shell- und C-Programmierung entwickelt. Es gibt daher zahlreiche Anleihen aus anderen Sprachen sowie verschiedene Perl-Spezialitäten. Dabei ist Perl im Gegensatz zu Shell-Skripten oder C-Programmen jedoch äußerst portabel.

Eigentlich ist Perl eine einfache Sprache - man braucht nicht viele reservierte Worte zu kennen, um ein Perl-Programm zu schreiben und man kann es ausführen wie ein Shellskript. Die von Perl benutzten Typen und Strukturen sind einfach zu verstehen und zu benutzen. Es gibt keine künstlichen Beschränkungen für die zu verarbeitenden Daten - Strings und Arrays können beliebig wachsen (solange der Speicher reicht) und sie sind darauf ausgelegt, trotzdem gut zu skalieren. Obwohl Perl in vieler Hinsicht eine einfach Sprache, ist es auch eine sehr reiche Sprache, bei der es sehr viel zu lernen gibt - das ist der Preis dafür, daß die einfachen Probleme einfach und die komplexen Aufgaben überhaupt zu lösen sind. Trotzdem ist Perl keine Sprache für große Projekte - es ist im besten und positivsten Sinn eine "Hacker-Sprache". Larry Wall hat dazu noch bemerkt, daß man in Perl die Lösung eines Problems auf vielen Wegen erreichen kann - und daß alle Wege richtig sind. Perl ist somit auch eine Sprache, die der Bewußtseinsverengung der Programmierer entgegenwirkt.

Aufgrund seiner offenen Struktur kann Perl sehr leicht erweitert werden. Man kann Perl in andere Sprachen und andere Sprachen in Perl einbetten und sogar objekt-orientierte Bibliotheken objekt-orientiert in Perl benutzen. Durch den Mechanismus zum Modulimport können externe Definitionen so genutzt werden als wären sie in Perl eingebaut. Es gibt zahllose Erweiterungen für Perl, darunter Datenbankanbindungen, Anbindungen an das graphische Toolkit Tk, mathematische Erweiterungen und vieles mehr.

Obwohl eigentlich eine Interpretersprache ist Perl eher eine Kreuzung aus Interpreter und Compiler und ähnelt damit Java. Zur Laufzeit wird das Perlskript vom Interpreter relativ schnell in ein internes, bytecode-ähnliches Format umgesetzt. Dabei werden, wie bei jedem Compiler, Syntaxchecks und Optimierungen durchgeführt (syntaktische und zum Compilierungszeitpunkt erkennbaren semantische Fehler, Probleme beim Einbinden von Bibliotheken, usw.). Nach dem erfolgreichen Durchlauf des Compilers wird der Zwischencode an den Perl-Interpreter zur Ausführung weitergereicht. Compiler und Interpreter sind effizient und der typische ÜBersetzungszyklus dauert meist nur Sekunden. Zusammen mit den vielen Möglichkeiten Perls, auf Fehler "weich" zu reagieren erlaubt diese kurze Zykluszeit Rapid-Prototyping in Perl.

Perl Dateien haben in der Regel die Endung `.pl` oder `.cgi`. Ausführung wird entweder durch expliziten Aufruf des Perl-Interpreters gestartet (z. B. perl tuwas.pl) oder bei UNIX/Linux durch eine spezielle Kommentarzeile zu Beginn der Quelldatei. Die Zeile lautet

          #!/usr/bin/perl

und weist die Shell an, als Interpreter für die Datei den Perl-Interpreter zu verwenden. Der Pfad zum Perl-Interpreter muß gegebenfalls an das lokale System angepaßt werden.

Zum Inhaltsverzeichnis | Zum nächsten Abschnitt

###### Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: