Frank Schönmann: Module

Beitrag lesen

hi!

Perl-Module sind einfach von anderen geschriebene Codeabschnitte, die nützliche und immer wieder gebrauchte Funktionen zur Verfügung stellen, die man - ohne die genaue Implementierung zu kennen - in seinen eigenen Programmen verwenden kann. Module sind also etwa das gleiche wie Units unter Pascal oder Bibliotheken unter C/C++.

use CGI qw(:standard);
Hiermit kann man wohl so ein Modul quasi initialisieren richtig?

Eigentlich wird der Quelltext eines Moduls (anders als in C/C++ oder Pascal liegen in Perl die Module im Quelltext vor und werden *vor* dem Kompilieren mit deinem eigenen Code verbunden) einfach an der entsprechenden Stelle in deinem Perl-Programm eingefügt. "use" hat dabei allerdings noch einige Besonderheiten, zb. die von Michael angesprochene Möglichkeit zu Initialisierungen innerhalb des Moduls etc.

$q=new CGI;
Das hier sagt mir nicht so viel..hier wird wohl irgendwie eine Variable q definiert, die
irgendwie mit dem Modul verknüpft ist.

Das ist Objektorientierung in Perl: CGI ist in etwa eine Klasse und $q eine Instanz dieser Klasse.

»»  $Name=$q->param('name');  
[...]

Ok das leuchtet mir etwas ein...in (" ") stehen die namen der input fields, die dann in die
Variablen $Name, $Contact usw abgelegt werden korrekt? und mit $q->param übernimmt
man sie erstmal in q richtig?

param() ist eine Elementfunktion der "Klasse" CGI, also kannst du sie über die Klasseninstanz $q aufrufen. In C++ würde dort statt des "->" ein einfacher Punkt stehen (wobei $q in Perl wohl eher so eine Art Pointer auf eine dynamisch angelegte Klasseninstanz darstellen soll - vergleiche auch das new - und in dem Fall die Syntax in C++ wieder genauso wäre).
param() liefert den Wert des angegebenen Formularfeldes. Dabei übernimmt es die Werte aus $q (bzw. der von $q referenzierten Instanz).

Ok..was kann das CGI Module noch? Oder wie verwende ich z.B. das mySQL Modul?

perldoc CGI
perldoc DBD::mySQL

bye, Frank!

ps. Meine Ausführungen oben kommen mir beim nochmaligen Durchlesen etwas wirr vor. Ich hoffe, du konntest mir trotzdem einigermaßen folgen ;)