Erläuterungen zu den Perl-Skripten
Die Tabelle mit den einzelnen Beispielen:
Script-Sprache | Link zum Testen | Link für die Ausgabe des Quellcodes |
---|---|---|
C-Shell | beispiel_1.csh | beispiel_1.csh |
Perl, CGI-Modul | beispiel_1.pl | beispiel_1.pl |
Perl, cgi-lib.pl | beispiel_2.pl | beispiel_2.pl |
PHP | beispiel_1.php | beispiel_1.php |
Quelltext beispiel_1.pl Quelltext beispiel_2.pl
Perl Skript, CGI Modul
CGI-Module der Perl-Library werden mit use eingebunden, z.B.
use CGI qw/:standard -private_tempfiles/; use CGI::Carp qw(fatalsToBrowser);
Durch die erste use-Anweisung steht eine Routine param zur Verfügung, die die Decodierung der Formularinformation realisiert und damit dem CGI-Programmierer das Leben erleichtert. Die Zuweisung erfolgt in unserem Beispiel durch
$Vorname = param('Vorname'); $Nachname = param('Nachname'); $Submit = param('Submit');
Auch hier ist die Wahl der Perl-Variablennamen $Vorname usw. völlig beliebig. Vorgegeben ist allerdings der param-Parameter: 'Vorname' korrespondiert mit dem entsprechenden FORM-Parameter.
Die HTML-Ausgabe kann mit dem Perl Kommando print erfolgen. Auch in Perl sollten Sie die Möglichkeit der Eingabeumlenkung nutzen, z.B.
print <<"HTML_SEITE3"; Content-type: text/html <html> <head><title>Fehlermeldung</title></head> <body bgcolor="#ffaaaa"> Ihre Eingabe ist zu lang! <p> <a href="$ENV{'HTTP_REFERER'}">Try it again</a> </body> </html> HTML_SEITE3
Die Environmentvariablen des CGI-Servers sind entsprechend der Perl-Syntax im Hash $ENV abgelegt (z.B. $ENV{'REQUEST_METHOD'}, $ENV{'CONTENT_LENGTH'}, $ENV{'SCRIPT_NAME'} ).
Perl Script, cgi-lib.pl
Die Datei cgi-lib.pl enthält die Routine ReadParse, die die Dekodierungsarbeit bei der Auswertung der Formularinformation übernimmt. cgi-lib.pl wird mit
require('/usr/local/lib/cgi-lib.pl');
in das eigene Perl-Programm eingebunden.
Die Zuweisung der Inahlte der FORM-Parameter zu Perl-Variablen erfolgt in unserem Beispiel durch
&ReadParse(*formvariablen); $Vorname = $formvariablen{'Vorname'}; $Nachname = $formvariablen{'Nachname'}; $Submit = $formvariablen{'Submit'};
Ansonsten gelten alle Berkungen wie zum C-Shell-Skript-Beispiel.