Webbasierte Adressdatenbank
Perl Module zur vereinfachten HTML Erzeugung
Grundsätzliches zu Modulen in Perl
Perl bietet neben den Standard Funktionen die Möglichkeit Erweiterungen in Form von
Modulen zu benutzen. Diese Module werden mit use
Modulname;
am Anfang des Perl Skriptes eingebunden. Im Standard Umfang
von Perl sind bereits viele Module vorhanden. Hier nur zwei Beispiele:
strict
beschränkt unsicher Konstrukte, d.h. alle Variablen
müssen mit my
deklariert werden.
CGI
ermöglicht die einfache Nutzung des Common Gateway
Interface. Es vereinfacht die HTML Ausgabe, die Übergabe von Formulardaten mit
GET
oder POST
, das parsen der Daten
(Umwandlung der mit hexadezimal Zahlen geschützten Sonderzeichen), Erstellen von HTML
Tabellen, Verwendung und Erzeugung von Formularen und vieles mehr.
Ein Beispiel mit CGI.pm
Wir wollen ein Formular erzeugen, das die Eingabe eines Namens ermöglicht. Danach
soll dann dise Ausgabe "Hallo Name" erfolgen:
1: #!/usr/bin/perl -w 2: 3: use CGI qw/:standard/; 4: use CGI::Carp qw/fatalsToBrowser/; 5: use strict; 6: 7: my $eingabe = param("name"); 8: 9: print header(), start_html("Hallo Benutzer"), h1("Hallo Benutzer"); 10: 11: if ($eingabe) { 12: print p("Hallo: $eingabe"); 13: 14: } else { 15: print hr, start_form; 16: print p("Bitte geben Sie ihren Namen ein: ", textfield("name","")); 17: print end_form, hr; 18: } 19: 20: print end_html;
Die Zeilennummern dienen nur dem besseren Verstänis und sind in Perl natürlich
nicht notwendig.
In der Zeile 3 binden wir das Modul CGI
mit den Standard
Methoden ein. Dieses Modul bietet noch viel mehr Möglichkeiten, auf die hier mal
nicht eingegangen werden soll. Zeile 4 benutzt das Modul
CGI::Carp
mit der Methode
fatalsToBrowser
, was bedeutet, daß bei Fehlermeldungen
diese auf dem Browser ausgegeben werden. In Zeile 5 verwenden wir strict
und beschränken unsichere Konstrukte, d.h. alle Variablen müssen mit
my
deklariert werden. In Zeile 7 wird es spannend. Hier holen
wir, falls vorhanden, die Daten aus dem Formular, welches ein Texteingabefeld enthät,
das als Bezeichnung "name" besitzt, parsen die Daten (Umwandlung der
Sonderzeichen) und geben die Daten an die Variable $eingabe
weiter. Zeile 9 teilt den Browser mit "Achtung es kommt ein HTML Dokument" und
gibt eine Überschift aus. In Zeile 11 prüfen wir, ob Daten übergeben wurden,
wenn ja geben wir diese in Zeile 12 aus. Wurden keine Daten gesendet, erzeugen wir in den
Zeilen 15 bis 17 ein Formular mit einem Texteingabefeld, und harren der Dinge die da
kommen.
Wird das Programm ohne Daten aufgerufen erhalten wir folgende HTML Ausgabe:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <TITLE>Hallo Benutzer</TITLE> </HEAD> <BODY> <H1>Hallo Benutzer</H1> <HR> <FORM METHOD="POST" ENCTYPE="application/x-www-form-urlencoded"> <P> Bitte geben Sie ihren Namen ein: <INPUT TYPE="text" NAME="name" > </P> </FORM> <HR> </BODY> </HTML>
Perl gibt das Ganze nahezu ohne Zeilenvorschübe aus, zur beseren Übersicht wurden
hier welche eingefügt.
Wird jetzt "Thomas" in das Formular eingegeben und die Return Taste
gerückt, gibt das Perl Programm folgendes zurück:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <TITLE>Hallo Benutzer</TITLE> </HEAD> <BODY> <H1>Hallo Benutzer</H1> <P>Hallo: Thomas</P> </BODY> </HTML>
Literaturhinweise:
- O Reilly Perl Module Doku
- perldoc CGI
- perldoc perlmod
Zurück zum Anfang dieses Projekts.