Kontakt aufnehmen

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.
Jedes Script, sei es in Perl oder einer anderen Programmiersprache verfasst, besteht aus einer Aneinanderreihung von Anweisungen. Sie können als einzelne Anweisungen oder als Anweisungsblöcke notiert werden. Letztere sind möglichst zu verwenden, um die Komplexität des Programmcodes - beispielsweise durch Zusammenfassen von Anweisungen gleicher Bedingtheit - zu verringern.

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;

Die Wertzuweisung zur Variablen $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

Des Weiteren dürfen Bezeichner, usw. nicht mit Ziffern und Sonderzeichen beginnen oder Sonderzeichen enthalten. Nur Buchstaben (a-z und A-Z), Ziffern oder Unterstrich (_) innerhalb des Namens sowie Buchstaben (a-z und A-Z) und Unterstrich (_) am Anfang des Namens sind hierbei möglich. Zuletzt sind Esszett (ß), deutsche Umlaute und Leerzeichen im Namen unzulässig.

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 %ENVEnthält
CONTENT_LENGTHAnzahl der übergebenen Zeichen nach Aufruf des CGI-Skripts mit POST
CONTENT_TYPEMime-Type des Datenstroms bei Aufruf des CGI-Skripts mit POST
DOCUMENT_ROOTPfadnamen des Wurzelverzeichnisses
GATEWAY_INTERFACEVersion der auf dem Server installierten CGI-Schnittstelle
HTTP_ACCEPTListe aller Mime-Types, welche der Browser des Clients unterstützt (*/* bedeutet, dass alle Mime-Types von ihm unterstützt werden)
HTTP_ACCEPT_ENCODINGKodierungsfähigkeiten des Client-Browsers (z.B.: gzip, deflate)
HTTP_ACCEPT_LANGUAGELandessprache des Client-Browsers
HTTP_COOKIECookienamen 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_HOSTDomain oder IP des Servers auf dem das CGI-Skript ausgeführt wird
HTTP_REFERERURL, von der aus das CGI-Skript aufgerufen wurde
HTTP_USER_AGENTName und Version des Client-Browsers (z.B.: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1))
PATH_INFOTeilzeichenkette 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_STRINGZeichenkette, welche dem CGI-Skript mit GET übergeben wurde
REMOTE_ADDRIP des Rechners/Servers, über den das CGI-Skript aufgerufen wurde
REMOTE_HOSTHostname des Rechners/Servers, über den das CGI-Skript aufgerufen wurde
REMOTE_IDENTProtokollinformationen, wenn auf dem Server das Protokoll ident für geschützte Zugriffe installiert ist
REMOTE_PORTPort des Client-Rechners, über den das CGI-Skript aufgerufen wurde
REMOTE_USERName des aufrufenden Users, welcher auf das CGI-Skript zugreifen möchte (nur bei Server-Authentifizierung, z.B. htaccess)
REQUEST_METHODInformation, 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_NAMEphysischen Pfad des CGI-Skript (z.B.: /usr/bin/cgi-bin/ Perl test.cgi)
SERVER_ADDRIP des Servers
SERVER_ADMINEmaildresse des Server-Admins laut Serverkonfiguration
SERVER_NAMEName des Servers; i.d.R. Hostname des Servers
SERVER_PORTPost des Servers (Standard: 80)
SERVER_PROTOCOLVersion des vom Server unterstützten HTTP-Protokolls
SERVER-SIGNATURESignatur des Servers (z.B. Apache /2.0.39 Server at localhost Port 80)
SERVER_SOFTWAREName und Version des Servers (z.B. Apache /2.0.39 (Win32))
SYSTEMROOTWurzelverzeichnis 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

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern