Weiter Zurück Inhalt

1. Die Sprache Perl

Unter den vielen Programmiersprachen, die es gibt, ist Perl ein ausgesprochenes Unikum, das dem Wunschtraum von der eierlegenden Wollmilchsau recht nahe kommt.

Zumindest bei Schafen macht die Natur übertriebene Optimierungen nicht mit, oder, wie man in einem fernen Lande sagt: Ein Schaf kann sich entweder auf die Wollproduktion oder das Fleischwachstum konzentrieren, wenn es frißt, aber nicht auf beides gleichzeitig.
Während viele Programmiersprachen einen hohen Grad von Spezialisierung für bestimmte Zwecke aufweisen, ist Perl mit dem ausdrücklichen Ziel entworfen worden, viele häufig anfallende Aufgaben aus den unterschiedlichsten Bereichen in einfacher, unkomplizierter, zwangloser und eleganter Weise zu lösen.

Perl wird gerne für komplexe Anwendungen eingesetzt, bei denen große Textdatenmengen verarbeitet werden müssen, etwa die automatierte Erzeugung von HTML-Dateien oder die Verwaltung von Benutzerdaten in einem großen Rechnernetzwerk. Aufgrund seiner Laufzeiteigenschaften wird man Perl wohl weniger für zeitkritische Anwendungen wie das Management eines Raketenstarts einsetzen; auch ist es nicht unbedingt für die 3D-Programmierung der neuesten Rennwagensimulation geeignet. Eine nahezu prototypische Anwendung ist die Verbindung von Datenbanken mit einer WWW-Schnittstelle mittels CGI, die überproportional häufig in Perl realisiert wird.

Beispielprogramme für Datenbankzugang und WWW-basierende Benutzeroberflächen finden sich in Kapitel Benutzeroberflaechen.
Perl ist daher möglicherweise unter den Programmiersprachen mit der größten Benutzerexposition die unbekannteste und steht damit in unmittelbarem Gegensatz zur vielleicht bekanntesten Programmiersprache mit allerdings relativ kleiner Benutzerexposition, nämlich BASIC.

Perl erlaubt und unterstützt eine Gliederung der Programme in wiederverwendbare Module, die von Programmierern weltweit ausgetauscht werden und aus einem öffentlich zugänglichen Archiv bezogen werden können.

1.1 Was ist Perl?

Perl

Die folgenden Ausführungen dieses Absatzes lehnen sich stellenweise an Tom Christiansens Perl-Kurs an (CPAN:/doc/perl_slides.tex. Siehe auch Kapitel über das Perl-Archiv).
ist eine interpretierte Sprache, die in vielen Aspekten an C angelehnt ist, aber auch Elemente von sed, awk, sh, Pascal und anderen Sprachen integriert. Perl stellt leistungsstarke Funktionen für die Manipulation textähnlicher Daten dar, ist aber auch in der Lage, mit Binärdaten umzugehen. Aufgrund der Anlehnung an bekannte Sprachen ist Perl in seinen Grundzügen schnell erlernbar. Programme lassen sich mit Perl leicht entwickeln, da Perl keinen aufwendigen Compilerlauf kennt, sondern einfach das Skript einliest und ausführt bzw. bei Fehlern im Skript vor Ausführung zurückweist.
Die Unterscheidung zwischen Programmier- und Skriptsprache ist im Falle Perls nicht einfach zu treffen, zumal die Grenze ohnehin nicht klar definiert ist. Rainer Fischbach vergleicht in seinem Artikel Schwierige Abgrenzung. Von den Job Control Languages bis Perl und Python (iX 12/1999, p. 60 ff.) ca. 17 verschiedene Skriptsprachen (zu denen er auch Perl zählt) und geht auch auf die Schwierigkeiten der Zuordnung ein. Tobias Himstedt, Kristian Köhntopp, Frank Pilhofer, Holger Schwichtenberg, Henning Behme und Christian Kirsch benutzen in ihrem Artikel Schnell, nicht schmutzig. Formulareintrag in verschiedenen Scriptsprachen überprüfen (iX 12/1999, p. 72 ff.) die Sprachen JavaScript, Perl, PHP, Python, Tcl und VBScript, um ein WWW-Programm mit gleicher Funktionalität zu schreiben. Sie resümieren, daß die Entscheidung für eine Sprache oft eher auf Grund indivueller Vorkenntnisse als wegen des Designs falle.

Perl bietet sich für Aufgaben an, die bisher mit der shell, awk oder sed gelöst wurden, und arbeitet schneller und effizienter als diese, da viele willkürliche Begrenzungen (Längen von Zeichenketten etc.) in Perl nicht existieren. Perl paßt sich dynamisch dem Datenvolumen an und ist in der Lage, ganze Dateien als einen String zu speichern, wenn der vorhandene Arbeitsspeicher dies zuläßt. Darüberhinaus sind viele mit Perl entwickelte Problemlösungen hochportabel, da es Perl für eine Reihe von Hardware-Plattformen und Betriebssystemen gibt. Ein Beispiel sind die sgml-tools, mit denen auch dieser Text verfaßt wurde.

1.2 Perl als Zwitter aus Interpreter und Compiler

Perl ist zwar eine interpretierende Sprache, überrascht aber trotzdem durch die außerordentliche Schnelligkeit des Programmablaufs. Dies resultiert aus dem Konzept Perls, ein Skript einzulesen und vor der Ausführung in Bytecode umzuwandeln, der erst dann ausgeführt wird, wenn das ganze Skript fehlerfrei verarbeitet worden ist. Dieses Verfahren hat mehrere Vorteile. Im Gegensatz zu shell-Programmen, mit deren Abarbeitung auch dann begonnen wird, wenn sie fehlerhaft sind, kommt ein syntaktisch falsches Perl-Programm nicht zur Ausführung. Das bewahrt allerdings nicht vor Schäden durch semantische Fehler! Darüberhinaus kann Perl ausführliche Fehlermeldungen ausgeben, die eine schnelle Einkreisung des Fehlers gestatten. Der compilierte Bytecode läuft mit einer Geschwindigkeit ab, die auch bei großen Datenmengen keinen Anlaß zur Kaffeepause gibt, da zwei der Hauptbremsen von klassischen Interpretern wegfallen: weder muß jede Zeile Quelltext vor jedem (eventuell wiederholten) Programmschritt neu eingelesen werden (Dateizugriffe brauchen immer Zeit, da hier das Betriebssystem mit seiner nicht bekannten Auslastung beansprucht wird), noch muß jede solchermaßen erneut eingelesene Zeile wiederholt in Bytecode umgewandelt werden.

Der von Perl erzeugte Bytecode eines Programms ist normalerweise nicht zugänglich, es existieren aber Programme und seit Version 5.005 Perl-Module, mit denen er abgespeichert und zwecks Ausführung wieder geladen werden kann.

1.3 Verfügbarkeit und Modularität

Da Perl frei für eine große Zahl von Betriebssystemen verfügbar ist, gibt es eine Hunderte von Musterprogrammen und Modulen, die von Programmierern weltweit beigetragen wurden und im Perl-Archiv (siehe CPAN) verfügbar gehalten werden. Es lohnt sich daher immer, vor der Inangriffnahme größerer Projekte das Archiv zu durchsuchen. Mit hoher Wahrscheinlichkeit findet sich dort ein Skript oder ein Modul, das entweder das gestellte Problem genau löst oder aber die nötigen Werkzeuge für eine einfache und elegante Lösung bereitstellt. Die für Perl verfügbaren Module werden im Kapitel Module vorgestellt.

1.4 Aktueller Stand

Die jeweils aktuelle Perl-Version wird im Archiv stable.tar.gz des Quellcode-Verzeichnisses von CPAN abgelegt. Ende November 1999 war der stabile Versionsstand 5.005_03; Entwicklerversionen, die aber noch nicht stabil sind, liegen bereits bei oder kurz vor 5.006.

1.5 Portierungen

Nach dem aktuellen Stand von CPAN und seiner Spiegel (siehe auch CPAN und Bezugsquellen) auf CD-ROM zu urteilen, gibt es Perl zumindest für die folgenden Architekturen und Betriebssysteme:

  1. UNIX-Varianten: AIX, Altos, Apollo, A/UX, BSD/OS, ConvexOS, CX/UX, DC/OS, SINIX, DEC OS/F, DGUX, DYNIX, EP/IX, ESIX, FreeBSD, HP-UX 9, IRIX, Interactive Unix, Linux, LynxOS, MPE/IX, netbsd, NeXT, SCO, Solaris, SunOS, Ultrix, Unicos, etc.
  2. Portierungen auf andere Plattformen: Acorn Archimedes (RISCOS), Amiga, AOS, AS/400, Atari, BeOS, Guardian, LynxOS, Mac, HP MPE/ix, MSDOS, IBM MVS (=OS/390), Netware, Plan 9, QNX, VMS, Stratus VOS, Windows 3.1, Windows NT und Windows 95.

Einschränkungen dieser Portierungen

Da es zwischen einzelnen Betriebssystemen große Unterschiede bei Bit-Ordnung, Dateisystemen, Funktionsaufrufen, Netzwerkfähigkeit, Prozeßkommunikation, Prozeßerzeugung, Speicherverwaltung und voreingestellten Variablengrößen gibt, sind nicht alle Funktionsmerkmale des Originals auf allen Plattformen anzutreffen.

Ohne jede Einschränkung kann Perl auf folgenden Plattformen kompiliert werden: Amiga, Plan 9, QNX, VMS und selbstverständlich modernen UNIX-Varianten. Der volle Funktionsumfang von Perl ist auf den nicht-UNIX-Plattformen nicht unbedingt verfügbar, und manche Perl-Portierungen werden von Bibliotheken mit plattform-spezifischer Unterstützung begleitet, so die Win32-Portierung ActivePerl mit der dazugehörigen Bibliothek.

Die Ausführungen und Beispiele in diesem Text beziehen sich immer stillschweigend auf Perl 5.005 auf Linux. Im November 1999 war auch die Perl-Version 5.004 noch weit verbreitet; noch ältere Versionen sollten allerdings gemieden werden.

1.6 Bezugsquellen

Perl steht unter dem Schutz der GNU General Public License sowie der GNU Artistic License und ist daher frei erhältlich. Die Weitergabe von modifiziertem Quellcode und die Weitergabe von Binärcode sind nur gestattet, wenn die Originalquellen mitgeliefert werden. Die genauen Regelungen sind in den Dateien README und Artistic im Wurzelverzeichnis des Perl-Quellcodes zu lesen.

Zentrales Perl-Archiv CPAN

Das zentrale Perl-Archiv im Internet heißt CPAN (Central Perl Archive Network, in Analogie zu CTAN, Central TeX Archive Network) und besteht aus einem Netzwerk von gespiegelten Servern mit einheitlicher Verzeichnisstruktur. Erreichbar ist es unter http://www.perl.com/CPAN. Beim Einloggen in das CPAN-Archiv wird automatisch ermittelt, welcher Server der nächstgelegene ist, und der Benutzer dorthin umgeleitet. Eine Liste verfügbarer Archiv-Server in geographischer Darstellung enthält die Datei CPAN:/misc/xearth.names, die in Verbindung mit dem Programm xearth benutzt werden kann:

Where do you want to perl today?
$ xearth -markerfile xearth.names &

Mit Stand vom 16. Juli 1998 befinden sich deutsche CPAN-Spiegel in:

Diese Liste ist bei ihrer Veröffentlichung mit hoher Wahrscheinlichkeit nicht mehr vollständig. Große Perl-Archive gibt es nämlich auf den ftp-Servern vieler Universitäten, so auch der FU Berlin

Die Adresse ist ftp.fu-berlin.de:unix/languages/perl.
, ohne daß dies nominell CPAN-Spiegel sind. Da jedoch sämtliche Module in aktuellen Versionen vorliegen, bestehen zumindest für die praktische Arbeit keine großen Einschränkungen.

Eine Übersicht über weltweite CPAN-Spiegel ist auch in der manpage perlmodlib enthalten.

CPAN auf CD-ROM

Ähnlich wie von CTAN gibt es auch von CPAN regelmäßige Abzüge auf CD-ROM. Ein bekanntes Produkt ist die im Buchhandel erhältliche CD-ROM Perl, die jährlich von Walnut Creek CDROM herausgegeben wird. Nachteilig an diesem Publikationsrhythmus ist natürlich, daß bestimmte, neueste Module möglicherweise nicht darauf enthalten sind.

Perl im Bündel mit anderer Software

Neben der quasi-kanonischen CD-ROM-Fassung mit dem CPAN-Inhalt wird Perl als fertig kompiliertes und eingerichtetes System mit einer großen Auswahl von Modulen allen Linux-Distributionen beigelegt. Wer sich Linux auf seinem Rechner einrichtet, kann davon ausgehen, daß Perl installiert ist. Ein einfacher Test besteht darin, am Kommandoprompt perl -v zu tippen. Die folgende Ausgabe sollte erscheinen:

$ perl -v

This is perl, version 5.005_03 built for i686-linux

Copyright 1987-1999, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5.0 source kit.

Es kann im Regelfall davon ausgegangen werden, daß die diesen Distributionen beiliegende Perl-Installation vollständig im Sinne des Perl-Quellfiles auf CPAN ist. Dem Autor dieser Zeilen ist allerdings bekannt, daß die Perl-Version, die dem Microsoft NT Servicepack beiliegt, nur aus wenigen elementaren Komponenten besteht.

1.7 Informationsquellen zu Perl

Das Informationsangebot zu Perl ist sehr vielfältig und kann in die Systemdokumentation (on-line) und die systembegleitende Dokumentation eingeteilt werden. Sowohl die elektronische als auch die Dokumentation in Buchform sind von außerordentlich hoher Qualität, so daß im Regelfall keine Frage unbeantwortet bleibt.

On-line-Dokumentation I (manpages)

Bestandteil der Perl-Distribution 5.005 sind etliche Manualseiten (manpages), die insgesamt (als manpage formatiert) rund 700 bis 800 Buchseiten Text enthalten:

Die Übersicht (man perl) empfiehlt, sich durch diesen Berg Information in angegebener Reihenfolge durchzuarbeiten. Das klingt, als ob zum erfolgreichen Arbeiten mit Perl die Lektüre all dieser manpages nötig sei. Dem ist nicht so; wenn man ein grundlegendes Verständnis für die Syntax von Perl erworben hat (z. B. nach Studium der perlsyn-manpage und einigen Beispielprogrammen), dann wird vermutlich perlfunc die wichtigste manpage für die tägliche Arbeit sein. In ihr sind alle eingebauten Funktionen von Perl dokumentiert; neben der allgemeinen Syntax gibt es nahezu immer ausführliche Beispiele und Verweise auf andere Funktionen mit verwandten Zwecken. Andere, auch häufig konsultierte manpages dürften perlre (Reguläre Ausdrücke), perlrun (Übersicht über die Kommandozeilenoptionen) und perlform (Deklaration von Ausgabeformaten) sein. Der Inhalt der anderen manpages überschreitet die Grenzen einer Einführung zu Perl deutlich und setzt teilweise längere Einarbeitung voraus.

Alle manpages gibt es auch bei CPAN als riesige, zusammenhängende Textdatei mit ca. 111.012 Zeilen Länge: CPAN:/doc/manual/text/PerlDoc-5.005_02.txt.gz, darüberhinaus auch als HTML-, PostScript-, gnuinfo- und texinfo-Datei.

On-line-Dokumentation II (pod)

Die Perl-Dokumentation liegt auch im pod-Format vor. Die Abkürzung steht für ``Plain Old Documentation'' und bezeichnet eine einfache Markup-Sprache, die die Speicherung von Programmcode und Dokumentation in einer Datei ermöglicht. Die manpage perlpod enthält weitergehende Informationen. Viele Module werden mit pod-Dokumentation ausgeliefert; auf jeder funktionierenden Perl-Installation finden sich die Kommandos pod2html, pod2latex und pod2man, mit der sich pod-Dokumente in HTML-Texte, LaTeX-Dateien oder manpages umwandeln lassen. CPAN:/doc/pod2x/ bietet außerdem noch pod2fm, pod2texinfo und pod2text an, mit denen sich FrameMaker-, texinfo- und ASCII-Versionen der pod-Dokumente erstellen lassen. Alle erwähnten Programme sind selbstverständlich in Perl geschrieben.

Perls FAQ-Familie

Das eigentliche Perl-FAQ (Frequently A(sk|nswer)ed Questions), das zuletzt 1997 überarbeitet wurde, gibt es im USENET (siehe unten), bei CPAN (doc/FAQs/FAQ/PerlFAQ.html), oder aber in neun Teilen als perlfaq[1-9]-manpage. Darüberhinaus gibt es zu einer Reihe von bekannten Fragestellungen weitere themenbezogene FAQs, etwa zur CGI-Programmierung, zum verschiedenen Portierungen von Perl (DOS, Mac, Windows in verschiedenen Variationen); alle diese Texte finden sich in CPAN:/doc/FAQs/. Die manpage perlfaq2 gibt weitere Hinweise auf Dokumentation in der CPAN-Hierarchie.

USENET: comp.lang.perl

Die klassische USENET-Nachrichtengruppe für Perl ist comp.lang.perl. c.l.p. ist seit Juli 1998 moderiert (also c.l.p.moderated) und wurde (siehe die Charta der Gruppe und Begründung des Moderationsantrags) mit dem Ziel geschaffen,

[...], dem unerfahrenen Perl-Programmierer eine nützliche Informationsquelle zu beschaffen und gleichzeitig erfahrene Programmierer zu gewinnen und zu halten, die wertvolle Beiträge zu dieser Gruppe leisten können.

Darüberhinaus gibt es die Gruppen

In anderen Sprachen als Englisch erscheinen außerdem folgende Gruppen:

möglicherweise gibt noch weitere Gruppen zum Thema Perl.

Kanonische Perl-Bücher

Es gibt mittlerweile etliche Dutzend Bücher zur Perl-Programmierung (siehe Kapitel Literaturverzeichnis), aber nur drei Texte, die in der Perl-Gemeinschaft als kanonische Texte anerkannt sind. Dies sind ``Programming Perl'' (von Larry Wall, dem Schöpfer von Perl, sowie Tom Christiansen und Randal L. Schwartz), ``Learning Perl'' von Randal L. Schwartz, und ``The Perl Cookbook'', von Tom Christiansen und Nathan Torkington.

Programming Perl, Second Edition

Mit dem Erscheinen von Perl 5.000 wurde eine neue Ausgabe von ``Programming Perl'' aufgelegt. Das Buch stellt die umfassendste und vollständigste Referenz zur Sprache dar und wurde von Larry Wall mitverfaßt. Die perlfunc-manpage ist weitgehend deckungsgleich mit dem Buchabschnitt, der die Perl-Funktionen enthält. Das Buch ist für die Arbeit unentbehrlich, denn es enthält nicht nur die vollständige Befehlsreferenz und eine Liste der wichtigsten Perl-Module, sondern auch zu bestimmten Themen (etwa geschachtelten Datenstrukturen) detaillierte Einführungen.

Wegen des Kamels auf dem Buchumschlag ist es auch als Kamel-Buch bekannt. Um es von seinem Vorgänger (für Perl 4) abzuheben, wird es gelegentlich als Blaues Kamel-Buch bezeichnet. Der Vorgänger war rot.

Learning Perl, Second Edition

Das Einführungsbuch zu Perl stellt die wichtigsten Konstrukte von Perl vor, ohne den Anfänger mit der Detailfülle der Standardreferenz zu verschrecken. Dieses Buch wird in den Nachrichtengruppen zu Perl oft einfach als Lama-Buch bezeichnet.

The Perl Cookbook

Das Kochbuch für Perl ist für die praktische Arbeit hervorragend geeignet, da es für eine große Zahl wiederkehrender Probleme die möglichen Lösungsansätze diskutiert und Musterlösungen in Perl vorstellt. So enthält es zahlreiche Beispiele zur Zeichenkettenbehandlung, zum Umgang mit Regulären Ausdrücken, zur Datums- und Uhrzeitverarbeitung, darüberhinaus eigene Kapitel, die den wichtigsten Datentypen und Anwendungsgebieten von Perl gewidmet sind.

Andere Perl-Bücher

Die Unterscheidung in kanonische und nicht-kanonische Texte bezieht sich nicht auf die Qualität weiterführender Literatur, sondern auf die enge Verbindung zwischen der Entstehung von Perl und der dazugehörigen kanonischen Dokumentation, die teilweise einer einzigen Quelle entspringen. Andere Bücher müssen deshalb nicht qualitativ schlechter sein.

An dieser Stelle werden noch ein paar weitere Titel vorgestellt:

Perl in a Nutshell

Von Ellen Siever, Stephan Spainhour und Nathan Patwardhan. O'Reilly, 1999. Ca. 656 Seiten.

Das Nußschalenbuch ist als Einführung zu einer ganzen Reihe Perl-typischer Anwendungen gut geeignet, da es ganze Abschnitte der Win32-Unterstützung von Perl, der CGI-Programmierung oder der graphischen Benutzerschnittstelle widmet.

Wer Perl lernt, weil er eigentlich nur ein CGI-Programm oder ein Demonstrationsprogramm mit graphischer Benutzeroberfläche schreiben möchte, ohne in die Tiefen von X oder dem Windows-API vorzudringen, kann durchaus mit diesem Buch alleine glücklich werden, da es auch eine kompakte Einführung von Bezug über Installation von Perl sowie den Grundlagen der Sprache enthält.

Advanced Perl Programming

Von Sriram Srinivasan. O'Reilly, 1997. Ca. 404 Seiten.

Dieses Buch ist definitiv nicht für Anfänger geeignet, die sich eine erste Orientierung über Perl verschaffen wollen. Vielmehr führen mehrere seiner Kapitel Themen fort, die in den anderen Büchern nur einführend behandelt werden oder gar nicht erwähnt werden. Programmierer, die Perl selbst erweitern möchten, kommen um dieses Buch nicht herum.

Algorithms with Perl

Von Jon Orwant, Jarkko Hietaniemi und John Macdonald. O'Reilly, 1999. Ca. 684 Seiten.

Dieses Buch ist kein Perl-Buch im strengen Sinne. Es ist eher ein kurzgefaßtes Informatik-Kompendium mit Perl als symbolischer Sprache. Viele Bücher über Informatik und Programmierung verwenden eine programmiersprachenähnliche Metasprache, die allerdings in wirklichen Computern nicht lauffähig ist. Ähnlich der pädagogischen Absicht, mit der N. Wirth PASCAL schrieb, verwenden die Autoren Perl als Grundlage, mit dem großen Vorteil, daß alle Beispiele sofort ohne weitere Umsetzung (und die damit verbundenen Probleme) ausführbar sind.

Dieses Buch wird trotz seines von Perl abweichenden Themenschwerpunktes allen empfohlen, die Perl als leistungsfähige Sprache für viele Anwendungen entdeckt haben, da die Beispiele helfen, Perl-idiomatische Beispiele von teilweise verblüffender Einfachheit zu finden.

Zeitschriftenartikel

Die deutsche Fachzeitschrift iX veröffentlich regelmäßig Beiträge zur Perl-Programmierung, die oft von namhaften Autoren verfaßt werden, die teilweise auch als Buchautoren zur Perl-Programmierung bekannt sind.


Weiter Zurück Inhalt