E-Book Startseite Karteikarten-Programm
0

Allgemeines

Nun ist es endlich soweit: Sie haben den Perl-Kurs nun fast absolviert. Der letzte Teil dieses Kurses sind die Beispiele. Hier im Perl-Kurs haben wir 2 Perl Beispiele erstellt. Wir wollen diese Beispiele für Sie Schritt für Schritt erklären. Wir machen nur aus diesem Grund eine Schritt für Schritt Anleitung um Ihnen das Programmieren etwas näher zu bringen und dass Sie dafür ein Gefühl bekommen, wie man Webseitenteile im Gesamten programmiert. Bei dem 1. Beispiel handelt es sich um eine Mini Perl integrierte Datenbank. In der Datenbankdatei sind die KFZ-Kennzeichen und deren jeweilige Orte gespeichert. Das 2. Beispiel ist dazu fähig Formulardaten zu vearbeiten. Diese Verarbeitungsmethode haben wir bis jetzt noch gar nicht angesprochen. Diese Verarbeitungsmethode ist jedoch nicht schwierig und muss nicht wirklich "erlernt" werden.


KFZ-Kennzeichen

Das Beispiel beginnt so wie jedes andere CGI-Skript: Mit dem Pfad zum Perl-Interpreter. Das erste was wir im Skript notieren ist die Ausgabe des HTML-Grundgerüsts mithilfe des print-EOF-Befehls. Im Head-Bereich notieren wir den Titel und den Autor (Max Mustermann).

#!/usr/bin/perl -w
 
# HTML-Grundgerüst ausgeben
print <<"EOF";
Content-Type: text/html
 
<!Doctype html>
<html>
 <head>
  <title>CGI-Mini-Datenbank: KFZ-Kennzeichen</title>
  <meta name="author" content="Max Mustermann" />
 </head>
 <body>
EOF

Als nächsten Schritt öffnen wir die Datenbankdatei, bei der es sich um eine einfache Textdatei handelt, und speichern die Daten der Datei in einem Array namens dateiarray. Im Anschluss darauf können wir die Datei gleich wieder schließen.

# Datei einlesen und speichern
open(DATEI, "database.txt") or die "Ein Fehler mit der Datenbankdatei ist aufgetreten!";
my @dateiarray = <DATEI>;
close(DATEI);

Nun müssen wir die eingelesen Daten noch verarbeiten. Dazu verwenden wir eine foreach-Schleife die das Array zeilenweise, also jeden Datensatz, bearbeitet. Hier verwenden wir eine neue Zeichenkettenfunktion namens split(). Mit dieser Funktion wird eine Zeichenkette bei dem Vorkommen eines bestimmten Zeichens aufgetrennt. Diese einzelnen Stringteile werden in einem Array gespeichert und können auch darüber aufgerufen werden. In unserem Beispiel wird das KFZ-Kennzeichen und die Bedeutung des KFZ-Kennzeichens durch einen Doppelpunkt getrennt. Im Anschluss der Schleife wird noch das Ende des HTML-Grundgerüsts ausgegeben.

# Daten ausgeben
my $dateidatenstring;
print "<dl>";
foreach $dateidatenstring (@dateiarray) {
    my @datas = split(/:/, $dateidatenstring);
    print "<dt>".$datas[0]."</dt><dd>".$datas[1]."</dd>";
}
print "</dl>";
 
# HTML-Grundgerüst Ende ausgeben
print "\n</body></html>";

Das waren nun die einzelnen Teile des Skripts. Hier nochmals das vollständige Skript:

#!/usr/bin/perl -w
 
# HTML-Grundgerüst ausgeben
print <<"EOF";
Content-Type: text/html
 
<!Doctype html>
<html>
 <head>
  <title>CGI-Mini-Datenbank: KFZ-Kennzeichen</title>
  <meta name="author" content="Max Mustermann" />
 </head>
 <body>
EOF
 
# Datei einlesen und speichern
open(DATEI, "database.txt") or die "Ein Fehler mit der Datenbankdatei ist aufgetreten!";
my @dateiarray = <DATEI>;
close(DATEI);
 
# Daten ausgeben
my $dateidatenstring;
print "<dl>";
foreach $dateidatenstring (@dateiarray) {
    my @datas = split(/:/, $dateidatenstring);
    print "<dt>".$datas[0]."</dt><dd>".$datas[1]."</dd>";
}
print "</dl>";
 
# HTML-Grundgerüst Ende ausgeben
print "\n</body></html>";
Anzeigebeispiel
Anzeigebeispiel



Formulardaten verarbeiten

Das CGI-Beispiel zur Verarbeitung von Formulardaten besteht aus 2 Dateien: einer HTML-Datei (Anzeige des Formulars) und einem CGI-Skript zur Verarbeitung der Formulareingaben. Wir beginnen mit der HTML-Datei: Als erstes benötigen wir das HTML-Grundgerüst. Gleichzeitig schreiben wir ein paar Metadaten in den Head-Bereich (Autor, Beschreibung, Keywords u. A.).

<!Doctype html>
<html>
 
<head>
  <title>CGI Beispiel</title>
 
  <meta http-equiv="Content-Type" content="text/html; charset=uft-8" />
  <meta name="author" content="Benjamin Jung, Homepage-Webhilfe" />
  <meta name="description" content="Dies ist ein Beispiel von 'Homepage-Webhilfe'. Dieses Beispiel soll  das CGI programmieren leichter machen. Eine Schritt für Schritt-Erklärung gibt es ebenfalls auf dieser Webseite." />
  <meta name="keywords" content="CGI, Beispiel, Homepage-Webhilfe, Programmierung" />
 
  <link href="/Bilder/favicon.ico" type="image/x-icon" rel="shortcut icon" />
</head>
 
<body>
 
</body>
</html>

Im nächsten Schritt erstellen wir das Formular. Das Formular wird in den Body-Bereich eingefügt. Innerhalb des Formulars verwenden wir eine Tabelle. Im Formular kann man einen Vornamen und einen Nachnamen eingeben. Durch das Attribut required mit dem Wert required, welches nur in HTML 5 vorhanden ist, wird überprüft ob das Feld ausgefüllt ist, d. h. beim Klicken auf Senden wird ein Tooltip angezeigt, wenn die Felder beim Klick auf Senden nicht ausgefüllt sind (Achtung: JavaScript muss aktiviert sein).

<form action="formdata.pl" method="post">
  <table>
    <tr>
      <td width="200px">Vorname:</td>
      <td width="200px"><input type="text" name="vorname" required="required" /></td>
    </tr>
    <tr>
      <td width="200px">Nachname:</td>
      <td width="200px"><input type="text" name="nachname" required="required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><input type="submit" name="submit" value="Senden" /></td>
    </tr>
  </table>
</form>

Nun geht es weiter mit dem CGI-Skript: Um die Formulardaten verarbeiten zu können müssen wir das CGI-Modul mit dem Befehl use CGI einbinden. Des Weiteren müssen wir das CGI-Modul in einer Variable speichern.

#!/usr/bin/perl -w
 
# CGI-Nutzung aktivieren
use CGI;
my $cgi = new CGI;

Um nun die Daten in einer lokalen Variable zu speichern müssen wir auf einen bestimmten Parameter (dazu wird die Funktion param() verwendet) vom CGI-Modul zugreifen. Innerhalb der Funktion param() wird der Name der im Formular-Feld (name-Attribut vom input-Element o. Ä.) in Anführungszeichen gesetzt.

# Daten empfangen
my $vorname = $cgi->param('vorname');
my $nachname = $cgi->param('nachname');

Nachdem wir nun die Daten in Variablen gespeichert haben, können wir diese Daten weiterverarbeiten. Im Beispiel verwenden wir hier nur den print-Befehl, um den Vor- und Nachname auszugeben. Weil wir aber trotzdem ein valides HTML-Dokument haben wollen, müssen wir ein komplettes HTML-Grundgerüst ausgeben.

# HTML-Grundgerüst ausgeben
print <<"EOF";
Content-Type: text/html
 
<!Doctype html>
<html>
 <head>
  <title>CGI-Beispiel: Formulardaten verarbeiten</title>
  <meta name="author" content="Max Mustermann" /˜
 </head>
 <body>
EOF
 
# Daten ausgeben
print "<p>Hallo ".$vorname." ".$nachname."!</p>";
 
# HTML-Grundgerüst Ende ausgeben
print "\n</body></html>";

Das waren nun die einzelnen Teile des Skripts. Hier nochmals die beiden vollständigen Skripte (1. HTML, 2. Perl):

<!Doctype html>
<html>
 
<head>
  <title>CGI Beispiel</title>
 
  <meta http-equiv="Content-Type" content="text/html; charset=uft-8" />
  <meta name="author" content="Benjamin Jung, Homepage-Webhilfe" />
  <meta name="description" content="Dies ist ein Beispiel von 'Homepage-Webhilfe'. Dieses Beispiel soll das CGI programmieren leichter machen. Eine Schritt für Schritt-Erklärung gibt es ebenfalls auf dieser Webseite." />
  <meta name="keywords" content="CGI, Beispiel, Homepage-Webhilfe, Programmierung" />
  <link href="/Bilder/favicon.ico" type="image/x-icon" rel="shortcut icon" />
</head>
<body>
  <form action="formdata.pl" method="post">
    <table>
      <tr>
        <td width="200px">Vorname:</td>
        <td width="200px"><input type="text" name="vorname" required="required" /></td>
      </tr>
      <tr>
        <td width="200px">Nachname:</td>
        <td width="200px"><input type="text" name="nachname" required="required" /></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" name="submit" value="Senden" /></td>
      </tr>
    </table>
  </form>
</body>
</html>
#!/usr/bin/perl -w
 
# CGI-Nutzung aktivieren
use CGI;
my $cgi = new CGI;
 
# Daten empfangen
my $vorname = $cgi->param('vorname');
my $nachname = $cgi->param('nachname');
 
# HTML-Grundgerüst ausgeben
print <<"EOF";
Content-Type: text/html
 
<!Doctype html>
<html>
 <head>
  <title>CGI-Beispiel: Formulardaten verarbeiten</title>
  <meta name="author" content="Max Mustermann" /˜
 </head>
 <body>
EOF
 
# Daten ausgeben
print "<p>Hallo ".$vorname." ".$nachname."!</p>";
 
# HTML-Grundgerüst Ende ausgeben
print "\n</body></html>";
Anzeigebeispiel
Anzeigebeispiel



Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de