Weiter Zurück Inhalt

4. Module

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.

4.1 Einbindung von Modulen

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;

zu schreiben, und schon steht der volle Umfang der CGI-Bibliothek bereit. Welche Funktionen bereitgestellt werden, ist der Dokumentation des jeweiligen Moduls zu entnehmen. Wichtige Module haben ihre eigene manpage, so daß in unserem Beispiel als manpage CGI aufgerufen werden kann.

Die Standard-Modulbibliothek

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.

4.2 Übersicht über die bei CPAN vorhandenen Module

Die im CPAN gespeicherten Module sind in folgende Kategorien unterteilt:

Perl Core Modules

Diese Module sollten eigentlich bei jeder Perl-Installation dabei sein.

Development Support

Entwicklungsunterstützung

Operating System Interfaces

Schnittstellen zu Betriebssystemen

Networking Devices IPC

Netzwerkfähigkeiten

Data Type Utilities

Routinen zur Datentypwandlung

Database Interfaces

Schnittstellen zu Datenbanken

User Interfaces

Hier findet sich u. a. Tkperl, eine Perl-Version mit eingebauten Tk/Tcl-Routinen.

Language Interfaces

Schnittstellen zu anderen Programmiersprachen

File Names Systems Locking

Dateinamenverwaltung

String Lang Text Proc

Zeichenkettenverarbeitung

Opt Arg Param Proc

Erweiterungen zur Verwaltung von Kommandozeile, Umgebungen etc.

Internationalization Locale

Anpassung an Fremdsprachen

Security and Encryption

Datensicherheit und Verschlüsselung

World Wide Web HTML HTTP CGI

Alles zur Bearbeitung von HTML-Daten

Server and Daemon Utilities

(Der Name sagt es)

Archiving and Compression

Archivierung und Datenkompression

Images Pixmaps Bitmaps

Alles zur pixelweisen Bildbearbeitung

Mail and Usenet News

Alles zum Thema Post und Nachrichten

Control Flow Utilities

Routinen für die Ablaufkontrolle

File Handle Input Output

Datei-Handels, Ein- und Ausgabe

Microsoft Windows Modules

Spezialisierte Module für Windows

Miscellaneous Modules

Verschiedenes

Commercial Software Interfaces

Schnittstellen zu kommerzieller Software

Not In Modulelist

Alles andere

4.3 Installation neuer Module

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.

Automatisches Installationsverfahren

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.

Manuelles Installationsverfahren

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

4.4 Versionsprobleme

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.


Weiter Zurück Inhalt