Perl ist modular konzipiert, so daß wiederkehrende Probleme mit Hilfe fertiger Programmbibliotheken, der Module, gelöst werden können. Es ist daher möglich, den Perl-Interpreter kompakt und schlank (und damit schnell) zu halten.
Bei Bedarf können Module für die Lösung bestimmter Aufgaben herangezogen werden. Diese Module können selbst geschrieben werden, es können aber auch die Module verwendet werden, die Teil der Standardbibliothek jeder vollständigen Perl-Installation sind. Darüberhinaus gibt es Module für die Lösung der unterschiedlichsten Spezialprobleme, deren vollständige Einbindung den Rahmen einer kompakten Perl-Distribution sprengen würde und die auch nicht von jedem Benutzer immer unbedingt bereitgehalten werden müssen. Diese Module finden sich in der großen, rasch wachsenden und ständig aktualisierten Modulbibliothek des Perl-Archivs CPAN.
Module sind eigentlich nichts anderes als Perl-Programme, die in der Regel nicht eigenständig ausgeführt werden (obwohl dies bei einigen Modulen auch möglich und sinnvoll ist). Alle in einem Modul deklarierten Variablen und Funktionen stehen auch dem Programm zur Verfügung, das dieses Modul aufruft. Daher braucht man beispielsweise in einem Perl-Programm, das als CGI-Skript ausgeführt werden soll, nur am Anfang die Zeile
use CGI;
CGI
aufgerufen werden kann.
Jede Perl-Installation wird mit einer Standardbibliothek von
Modulen ausgeliefert, die bei ordnungsgemäßer Installation
automatisch benutzbar ist. Dem Anfänger sei empfohlen, zur Übersicht
zunächst nicht die manpage perlmod
zu lesen, da diese eine
theoretische Einführung in das Modulkonzept von Perl enthält,
zu deren Verständnis auch das Objektmodell von Perl vorausgesetzt
wird. Brauchbarer ist dagegen die manpage perlmodlib
, wo bis
zum Kapitel Standard Modules vorzublättern ist. Die Module
sind so zahlreich, daß sie hier ausnahmsweise nicht alle genannt
werden; es wird daher auf die manpage und Programming Perl
verwiesen, die beide vollständige, aber knappe Beschreibungen der
Bibliothek enthalten. Einzelne Modulgruppen sind im
Nußschalen-Buch allerdings sehr viel ausführlicher erklärt,
so daß sich das Nußschalen-Buch besser für Anfänger eignet,
während Programming Perl fortgeschrittene Kenntnisse
voraussetzt.
Die im CPAN gespeicherten Module sind in folgende Kategorien unterteilt:
Diese Module sollten eigentlich bei jeder Perl-Installation dabei sein.
Entwicklungsunterstützung
Schnittstellen zu Betriebssystemen
Netzwerkfähigkeiten
Routinen zur Datentypwandlung
Schnittstellen zu Datenbanken
Hier findet sich u. a. Tkperl, eine Perl-Version mit eingebauten Tk/Tcl-Routinen.
Schnittstellen zu anderen Programmiersprachen
Dateinamenverwaltung
Zeichenkettenverarbeitung
Erweiterungen zur Verwaltung von Kommandozeile, Umgebungen etc.
Anpassung an Fremdsprachen
Datensicherheit und Verschlüsselung
Alles zur Bearbeitung von HTML-Daten
(Der Name sagt es)
Archivierung und Datenkompression
Alles zur pixelweisen Bildbearbeitung
Alles zum Thema Post und Nachrichten
Routinen für die Ablaufkontrolle
Datei-Handels, Ein- und Ausgabe
Spezialisierte Module für Windows
Verschiedenes
Schnittstellen zu kommerzieller Software
Alles andere
Die Installation neuer Module kann automatisiert oder manuell erfolgen. Wenn der Computer Netzanbindung hat, das gewünschte Modul bei CPAN vorliegt und am Modul keine Änderungen vorgenommen werden sollen, empfiehlt sich die automatisierte Methode, ansonsten kann immer noch manuell verfahren werden.
Perl ist in der Lage, bei CPAN vorliegende Module automatisch zu holen, zu entpacken und zu installieren. Das Perl-Modul CPAN (in der Standardinstallation enthalten) kann mit folgendem Aufruf beim Start von Perl eingebunden werden:
$ perl -MCPAN -e shell
Bei diesem Aufruf stellt Perl normalerweise eine interaktive
Eingabeaufforderung (-e shell
) bereit. Erfolgt der
Aufruf zum ersten Mal, werden verschiedene Parameter
abgefragt und nach Vorgabe bzw. Benutzervorschlag gesetzt.
Anschließend kann man dann einen CPAN-Spiegel angeben, von
dem das Programm in Zukunft Module anfordern soll.
Bei jedem späteren Aufruf steht sofort ein Kommandoprompt
bereit, an dem man z.B. i Tk
eintippen kann, um das
Modul Tk zu installieren. Es wird dann auch automatisch die
passende Versionsnummer ausgesucht. Wenn das Modul gefunden
ist, wird es in den Computer übertragen, dort entpackt und
kompiliert. Anschließend kann es sofort benutzt werden.
Sollte festgestellt werden, daß Abhängigkeiten mit weiteren
Modulen bestehen, so werden auch diese automatisch
installiert.
Ausführliche Beschreibungen finden sich in der manpage
CPAN
sowie im Nußschalenbuch auf Seite 188.
Zunächst wird das Archiv des Moduls in ein frei
wählbares Verzeichnis kopiert. Das kann /tmp
ebenso
sein wie /usr/local/src
, oder /home/goofy/test
.
Wenn das Archiv mit dem Modul (das immer als komprimiertes
tar
-Archiv vorliegt) mit dem Befehl
$ tar fxvz MyModule-0.93.tar.gz
entpackt worden ist, entsteht ein neues Unterverzeichnis,
das regelmäßig eine README
-Datei und eine Datei namens
Makefile.PL
enthält. Zunächst ist in das neue
Unterverzeichnis zu wechseln. Es empfiehlt sich immer, zuerst
die README
-Datei zu konsultieren. Sie enthält oft
Hinweise auf Mindestanforderungen der benötigten Software
(Perl-Versionsnummern, auf jeden Fall benötigte andere Perl-Module
und ihre Versionsnummern, externe Entwicklungsbibliotheken
etc.). Bei größeren Modulen finden sich hier auch
maschinenspezifische Hinweise für Compiler, Pfade etc.
Wenn nach der Lektüre der README
-Datei dem
Installationsbeginn nichts mehr im Wege steht, kann die
Installation mit folgenden Schritten vollzogen werden:
$ perl Makefile.PL
$ make
$ make test
$ make install
Das große Tempo, mit dem die Entwicklung von Perl und seinen Modulen vorangetrieben wird, hat natürlich zunächst den Vorteil, daß dem Anwender ein ständig wachsender Funktionsumfang zur Verfügung steht. Auf der anderen Seite ist nicht immer ganz einleuchtend, daß auch große Gewinne an Funktionalität nur in einer kleinen Veränderung der Versionsnummer resultieren. So gering der Übergang von 5.003 nach 5.004 erscheinen mag, so sehr verändert sich im Einzelfall die Behandlung einzelner Datenstrukturen.
Während im Normalfall die hinzugekommene Funktionalität keine Probleme verursacht, kann es bei der Weitergabe von Perl-Texten zu Schwierigkeiten kommen, wenn stillschweigend die Leistungsmerkmale einer bestimmten Version angenommen werden.
Kritischer kann es schon bei Modulen werden, deren Entwicklung noch nicht abgeschlossen ist. Hier kann es gut sein, daß sich interne Schnittstellen ohne Ankündigung ändern. Module, die aufeinander aufbauen, sind daher an die Einhaltung der geforderten Versionsnummern gebunden. Es kann nämlich durchaus sein, daß MeinModul-2.63 ganz wunderbar mit MeinAnderesModul-0.74 zusammenarbeitet, aber die neuere Version MeinModul-2.81 das andere Modul MeinAnderesModul-0.77 voraussetzt.
Leider kommt es in wenigen Fällen auch vor, daß bestimmte Mechanismen gelegentlich umgeschrieben werden und bei gleicher Funktionsweise zwar gleich erscheinen, aber gegenüber der Vorgängerversion optimiert sind, wobei dann neue Nebenwirkungen und Wechselwirkungen auftreten. In Einzelfällen verlangen daher bestimmte Anwendungen einen früheren als den aktuellen Versionsstand. Ein Beispiel hierfür ist das auf gnuplot basierende Plot-Programm.
Glücklicherweise gibt es in Perl einen Mechanismus zur Abfrage und Weitergabe von Versionsnummern, so daß im Zweifelsfall der Benutzer auf entstehende Probleme hingewiesen wird.
Für das Gros der täglichen Arbeit mit Perl stellen Versionskonflikte des Hauptprogramms und der Module kein Problem dar.