CGI: Syntax
Die Syntax einer Programmiersprache ist im weiteren Sinne der formale Aufbau des Programmtexts, welcher stets einem bestimmten Schema folgt. Perl weist dabei eine sehr eigenwillige Syntax auf, welche auf dem ersten Blick eher an eine Ansammlung kryptischer Zeichen erinnert. Ein formal ordentlicher Programmierstil ist demnach besonders in Perl eine der wichtigsten Voraussetzungen, um dem Codeverlauf folgen zu können.Anweisungen
Anweisungen können vielfältige Strukturen annehmen. Allen gemein ist jedoch, dass sie stets durch die Angabe eines Strichpunkts (;
) am Ende der Anweisung abgeschlossen werden. Beispiel:
# Einfache Wertzuweisung:
$x = 1;
# Aufruf einer Funktion (hier: print):
print "Hallo Welt";
# Verwendung von Operatoren:
$Ergebnis = $x + $x;
$x
erfolgt dabei mithilfe des Zuweisungsoperators (=
), welcher im Kapitel Operatoren noch erwähnt wird.
Anweisungsblöcke
Ein Anweisungsblock ist, worauf der Name eigentlich schon hindeutet, eine Ansammlung meist mehrerer Anweisungen zu einem Block, welcher wiederum strukturell einer anderen Anweisung untergeordnet ist. Die Anweisungen im Block werden dabei stets innerhalb geschweifter Klammern notiert. Schleifenkonstrukte, Bedingungen oder Subroutinen können beispielsweise derartige Anweisungsblöcke enthalten:# Schleife:
foreach(keys(%ENV))
{
print $_;
}
# Bedingung:
if($x != 0)
{
$x = 0;
$a = 1;
}
Kommentare
Kommentare dienen dem Erläutern von Skriptpassagen oder der Notation anderer Anmerkungen jeglicher Art. Des Weiteren können sie auch zur optischen Trennung des Codes dienen, indem man beispielsweise horizontale Striche als Kommentarzeile einfügt.Kommentare werden stets durch das Rautezeichen (
#
) eingeleitet, welches dem Interpreter signalisiert, dass der nachfolgende Text der gleichen(!) Zeile (nicht der Folgezeile o.ä.) Kommentartext ist. Sie werden vom Perl-Interpreter nicht als Perl-Code interpretiert. Beispiel:
#Dies ist ein Kommentar
$i = 1; #Dies ist ein Kommentar nach Perl-Code
Besondere Hinweise zur Syntax
Bei der Vergabe von Bezeichnern, etc. müssen Regeln beachtet werden, damit der Code fehlerfrei interpretiert werden kann.Zunächst sei erwähnt, dass der Perl-Interpreter in Groß- und Kleinschreibung unterscheidet. Folgender Code würde so beispielsweise nicht zum gewünschten Ergebnis und ggf. zu Fehlern führen:
$Zahl = 15;
$Zahl2 = 10 + $zahl;
#$Zahl2 erhält Wert 10, da die Variable $zahl nicht existiert
CGI-Umgebungsvariablen
Die CGI-Umgebungsvariablen (environment variables) sind festgelegte, namentlich nicht veränderbare Variablen, welche beim Aufruf eines CGI-Skripts in der CGI-Schnittstelle automatisch ihre entsprechenden Werten zugewiesen bekommen.Die Umgebungsvariablen sind in Form eines Hashes namens
%ENV
organisiert und damit über die entsprechende Methodik in Perl auslesbar.Sie sind aufgrund ihrer wichtigen Informationen beispielsweise zum Browser des Clients, zum Server, zum aufrufenden CGI-Skript, u.a. sehr nützlich. Des Weiteren werden als eines der wichtigsten Umgebungsvariablen auch Inhalte der Felder eines Formulars, welches das Skript via POST aufrief, in die CGI-Schnittstellen-Umgebung geschrieben. Sie sind aus dem
STDIN
mit Hilfe der Variable $ENV{"CONTENT_LENGTH"}
auslesbar. Mehr Informationen dazu erhalten Sie im entsprechenden Abschnitt.Bei einigen dieser Umgebungsvariablen ist es auch möglich selbst ihre Werte zu verändern.
Die Verfügbarkeit der Umgebungsvariablen hängt von der Konfiguration des Servers ab! So zum Beispiel ließe sich eine zeilenweise Auflistung der auf dem Server verfügbaren Umgebungsvariablen realisieren:
while (($Name, $Value) = each(%ENV))
{
print "<b>" , $Name , ": </b>" , $Value , "<br>n";
}
Übersicht wichtiger CGI-Umgebungsvariablen
Die nachfolgende Übersicht enthält die wichtigsten CGI-Umgebungsvariablen, deren Wert teilweise nur gespeichert wird, wenn es die Konfiguration des Servers zulässt:Schlüsselname in %ENV | Enthält |
---|---|
CONTENT_LENGTH | Anzahl der übergebenen Zeichen nach Aufruf des CGI-Skripts mit POST |
CONTENT_TYPE | Mime-Type des Datenstroms bei Aufruf des CGI-Skripts mit POST |
DOCUMENT_ROOT | Pfadnamen des Wurzelverzeichnisses |
GATEWAY_INTERFACE | Version der auf dem Server installierten CGI-Schnittstelle |
HTTP_ACCEPT | Liste aller Mime-Types, welche der Browser des Clients unterstützt (*/* bedeutet, dass alle Mime-Types von ihm unterstützt werden) |
HTTP_ACCEPT_ENCODING | Kodierungsfähigkeiten des Client-Browsers (z.B.: gzip, deflate) |
HTTP_ACCEPT_LANGUAGE | Landessprache des Client-Browsers |
HTTP_COOKIE | Cookienamen und -werte, wenn vom Client-Browser gesendet; Durch @Cookies = split(/[;,]s*/,$ENV{'HTTP_COOKIE'}); lässt sich ein Array @Cookies mit Name-Wert-Paarungen (getrennt durch =) erzeugen |
HTTP_HOST | Domain oder IP des Servers auf dem das CGI-Skript ausgeführt wird |
HTTP_REFERER | URL, von der aus das CGI-Skript aufgerufen wurde |
HTTP_USER_AGENT | Name und Version des Client-Browsers (z.B.: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)) |
PATH_INFO | Teilzeichenkette nach Pfad des aufgerufenen CGI-Skripts und vor dem ersten Fragezeichen (?); von Interesse, wenn ein Pfadname direkt nachURLdes CGI-Skripts als Parameter mit GET übergeben wird |
QUERY_STRING | Zeichenkette, welche dem CGI-Skript mit GET übergeben wurde |
REMOTE_ADDR | IP des Rechners/Servers, über den das CGI-Skript aufgerufen wurde |
REMOTE_HOST | Hostname des Rechners/Servers, über den das CGI-Skript aufgerufen wurde |
REMOTE_IDENT | Protokollinformationen, wenn auf dem Server das Protokoll ident für geschützte Zugriffe installiert ist |
REMOTE_PORT | Port des Client-Rechners, über den das CGI-Skript aufgerufen wurde |
REMOTE_USER | Name des aufrufenden Users, welcher auf das CGI-Skript zugreifen möchte (nur bei Server-Authentifizierung, z.B. htaccess) |
REQUEST_METHOD | Information, ob das CGI-Skript mit POST oder GET aufgerufen wurde |
REQUEST_URI | HTTP-Pfad des CGI-Skripts inkl. übergebene Daten (z.B. /cgi-bin/ Perl test.cgi?new) |
SCRIPT_NAME | HTTP-Pfad des CGI-Skripts (z.B.: /cgi-bin/ Perl test.cgi) |
SCRIPT_FILE_NAME | physischen Pfad des CGI-Skript (z.B.: /usr/bin/cgi-bin/ Perl test.cgi) |
SERVER_ADDR | IP des Servers |
SERVER_ADMIN | Emaildresse des Server-Admins laut Serverkonfiguration |
SERVER_NAME | Name des Servers; i.d.R. Hostname des Servers |
SERVER_PORT | Post des Servers (Standard: 80) |
SERVER_PROTOCOL | Version des vom Server unterstützten HTTP-Protokolls |
SERVER-SIGNATURE | Signatur des Servers (z.B. Apache /2.0.39 Server at localhost Port 80) |
SERVER_SOFTWARE | Name und Version des Servers (z.B. Apache /2.0.39 (Win32)) |
SYSTEMROOT | Wurzelverzeichnis des Server-Betriebssystems |
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Variablen und Konstanten
Über uns
![Stefan Wienströer](/i/stefan-264.png)
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project