Module

Pragmatischer Ansatz
Wir widmen uns folgenden Fragen:
Was bieten Module ?
Module sind fertige Lösungen von speziellen Programmieraufgaben. Sie bieten Funktionen ( Methoden genannt ), und Variablen ( Eigenschaften genannt ) die verwendet werden können, ohne daß die Einzelheiten der Lösung bekannt sein müssen.

Beispiel :
Das Modul Cwd bietet u.a. die Methode cwd, die das aktuelle Verzeichnis liefert.
Das geschieht unabhängig vom jeweiligen Betriebssystem, auf dem das Programm abläuft.

Wo liegen die Module ?
Perl bringt standardmäßig eine Menge von Modulen mit. Sie werden als .pm-Dateien in einem Verzeichnis abgelegt. Die Verzeichnisse, in denen der Perlinterpreter nach Modulen sucht, sind in der Perlvariable @INC gespeichert.
Beispiel : SuSE Linux 7.3, Perlversion 5.6.1 , perl -e 'print join "\n",@INC' liefert

/usr/lib/perl5/5.6.1/i586-linux
/usr/lib/perl5/5.6.1
/usr/lib/perl5/site_perl/5.6.1/i586-linux
/usr/lib/perl5/site_perl/5.6.1
/usr/lib/perl5/site_perl
.

Zu beachten ist das "."-Verzeichnis. Das ist das Verzeichnis, in dem das Programm abläuft.
( Genauer : das aktuelle DVZ zum Zeitpunkt der Anwendung von use Modulname )

Unterhalb der DVZ' aus @INC gibt es weitere Verzeichnisse, wie z.B. Net unter .../site_perl/5.6.1/Net/.







Wie werden Module angewendet ? 1. Einbinden in Programme
Module werden in ein Programm mit
use Modulname; eingebunden.
Dann hat man Zugriff auf die Methoden dieses Moduls.

Liegt das Modul in einem Unterverzeichnis von @INC, so wird das Modul mit
use Verzeichnisname::Modulname; eingebunden.

Beispiel : use Net::FTP;

Mit der Funktion new wird eine Kopie (Instanz) des Moduls gebildet.

Beispiel : $ftp_instanz = new Net::FTP("host.domain.com")

Wie werden Module angewendet ? 2. Verwenden von Funktionen
Module stellen Methoden und Eigenschaften zur Verfügung. Diese Methoden werden nicht einfach durch Aufruf des Methodennamens ausgeführt.
Eine Funktion des Moduls ruft man mit der Instanz auf

Beispiel : $ftp_instanz->login("$username","password");

Wo gibt es Informationen über Module ?
In den Man-pages, die zu den Modulen geliefert werden. Dabei werden die Man-pages genauso aufgerufen, wie die Module in den Scripten eingebunden werden.

Beipiel :
man Cwd
man Net::FTP
man File::Copy

Wo gibt es neue Module ?
Auf dem CPAN (Comprehensive Perl Archive Network), ein FTP-Archiv, das weltweit gespiegelt wird.
Einstieg über www.perl.com
Mirror-sites worldwide
Deutscher Mirror auf ftp.gmd.de
Eine Newsgroup comp.lang.perl.modules kümmert sich um Module
eine Newsgroup comp.lang.perl.misc kümmert sich um Perl allgemein.
Etwas Theorie
Zunächst wird für das Modul mit seinen Methoden und Eigenschaften ein eigener Speicherplatz reserviert.
Das geschieht, indem man eine Kopie aller Methoden/Eigenschaften aus dem Modul erstellt und diese Kopie benennt.
Beispiel : $ftp = new Net::FTP;
eine Kopie wird mit der Methode new erstellt, die Variable $ftp ist dann ein Bezeichner, der auf diese Kopie verweist.
In der Terminologie der OOP ist das Modul ein Objekt, die Kopie eine Instanz dieses Objekts und die skalare Variable, der die Instanz zugewiesen wird, eine Referenz auf diese Objektinstanz.