Beispiele aus den ZPG-Mitteilungen für gewerbliche Schulen Nr. 20

Die nachfolgenden Beispiele beziehen sich auf den Artikel WEB-Seiten als Programmoberflächen - CGI Scripte selbst erstellt der in den ZPG-Mitteilungen Ausgabe Nr. 20 vom Dezember 2000 der Zentralen Projektgruppe für Datenverarbeitung Gewerbliche Schulen am Landesinstitut für Erziehung und Unterricht in Stuttgart erschienen ist.

1. Beispiel: Hallo Welt!

Perl-Script: hello.pl
#!/usr/bin/perl
#
# hello.pl
#
# von H. Baeurle - letzte Aenderung: 26.06.2002
user strict;
my $serverzeit;
# Ueber den Content-Type wird dem Browser mitgeteilt um
# welche Art von Daten es sich im folgenden handelt,
# z.B. image/gif, image/jpg ...
print "Content-Type: text/html\n\n";

# Die Ausgabe des UNIX-Befehls date wird in der Variablen
# serverzeit gespeichert.
# Achtung: Die richtigen Hochkommas verwenden!
$serverzeit=`/bin/date`;

# Ab hier wird mit print-Befehlen die HTML-Ausgabe erzeugt.
print "<html><head>\n";
print "<title>Hello world!</title>\n";
print "</head><body>\n";
print "<h1>Hello world!</h1>\n";
print "Die Serverzeit ist: ",$serverzeit;
print "</body></html>\n";

# Programmende
Test: hello.pl

2. Beispiel: Ein Formular

HTML-Datei: formular.html
<html>
<head>
<title>Ein Formular</title>
</head>

<body>
Geben Sie in das Formular Ihre Daten ein und klicken Sie dann auf OK.<p>
<form action="form.pl" method="get">
Ihr Name:<br>
Herr<input type="radio" name="anrede" value="Herr" checked><br>
Frau<input type="radio" name="anrede" value="Frau"<br>
<input type="text" size="30" name="name"><p>
<input type="submit" value="OK"> 
<input type="reset" value="Abbrechen">
</form>
</body>
</html>
Perl-Script: form.pl
#!/usr/bin/perl
#
# form.pl
#
# von H. Baeurle - letzte Aenderung: 26.06.2002

use strict;

my ($eingabe, @paare, $paar, $schluessel, $wert, %FORM, $serverzeit);

# Daten je nach gewaehlter Uebertragungsmethode in $eingabe speichern
# Uebertragungsmethode GET
if($ENV{'REQUEST_METHOD'} eq 'GET')
{
$eingabe = $ENV{'QUERY_STRING'};
}
# Uebertragungsmethode POST
else
{
read(STDIN, $eingabe, $ENV{'CONTENT_LENGTH'});
}

# Die einzelnen Wertepaare trennen - Trennzeichen ist &
@paare = split(/&/, $eingabe);

# Jedes Wertepaar wird jetzt der Reihe nach abgearbeitet
foreach $paar (@paare)
{
# Wertepaare selbst in Schluessel und Wert trennen - Trennzeichen ist =
($schluessel, $wert) = split(/=/, $paar);

# + Zeichen wieder in Leerzeichen umwandeln
$wert =~ tr/+ / / ;

# Hex-Codierung wieder in ASCII-Zeichen
$wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# Hash mit Daten erstellen
$FORM{$schluessel} = $wert;

}

# Mime-Type
print "Content-Type: text/html\n\n";

# Server-Zeit ermitteln
$serverzeit=`/bin/date`;

# Ab hier wird mit print-Befehlen die HTML-Ausgabe erzeugt.
print "<html><head>\n";
print "<title>Hello world!</title>\n";
print "</head><body>\n";
print "<h1>Hallo ";
print "$FORM{anrede} $FORM{name}";
print "</h1>\n";
print "Die Serverzeit ist: ",$serverzeit;
print "</body></html>\n";

# Programmende
Test: formular.html

2. Beispiel vereinfacht

Das Perl Script kann durch Einbinden des Modules CGI mit use cgi; deutlich vereinfacht werden. Das Modul CGI bietet einige Funktionen, die die Auswertung der Übergabeparameter übernehmen.

Perl-Script: formcgi.pl
#!/usr/bin/perl
#
# formcgi.pl
#
# von H. Baeurle - letzte Aenderung: 26.06.2002

use CGI;
use strict;
my ($form, $anrede, $name, $serverzeit);

# Formular auswerten
$form = new CGI;
$anrede = $form->param('anrede');
$name = $form->param('name');

# Server-Zeit ermitteln
$serverzeit=`/bin/date`;

# Ausgabe erzeugen
print "Content-type: text/html\n\n";
print <<"END_OF_TEXT";
<html><head>
<title>Hello world!</title>
</head><body>
<h1>Hallo $anrede $name</h1>
Die Serverzeit ist: $serverzeit
</body></html>

END_OF_TEXT

# Programmende
Test: formcgi.html

Letzte Änderung: 26.06.2002 - (c) Dipl.-Gwl., Dipl.-Ing. (FH) H. Bäurle - Elektronikschule Tettnang