Variablen, denen man einen einfachen Wert zuweist, nennt man Skalare (oder auch nur Variablen). Es sind Zahlen oder Zeichenketten erlaubt, wobei letztere in Anführungszeichen gesetzt werden (doppelte oder einfache, siehe vorheriges Kapitel).
Die Definition eines Skalars beginnt mit einem Dollarzeichen, gefolgt von dem selbstgewählten Namen für den betreffenden Skalar. Das Dollarzeichen muss auch gesetzt werden, wenn die Variable 'nur' als Teil einer Operation vorkommt.
Beispiele: #!/usr/bin/perl $Wert = 675954; $Quadratwurzel = sqrt($Wert); print $Quadratwurzel; #!/usr/bin/perl $Wert = 43538343; $Teilwert = substr($Wert,2,4); print $Teilwert; |
substr = Teilzeichenmenge extrahieren , im obigen Beispiel ab dem 3. Zeichen (2,4- beim Zählen wird mit 0 angefangen!) 4 Zeichen lang: Ergebnis: 43538343 -> 5383.
"Arrays (Listen) sind Ketten zusammengehöriger Skalare. In Perl haben solche Listen zentrale Bedeutung, weil es sehr einfach ist, Daten in Listen einzulesen und Listen zu manipulieren." (Zitat SelfHTML- Arrays)
Beispiele:#!/usr/bin/perl@Daten = ('Martin',23,'Berlin','Abitur'); #oder: @Daten = ("Martin",23,"Berlin","Abitur"); print $Daten[0], " ist ", $Daten[1], " Jahre alt, wohnt in ", $Daten[2], " und hat ", $Daten[3]; #!/usr/bin/perl for($i = 1;$i <= 7;$i++) { $Wert = $i * $i; push(@Quadrate, $Wert); } for(@Quadrate) { print $_, "\n"; } #!/usr/bin/perl @Buchstaben = ("a".."z"); @Zahlen1 = (6..100); print $Buchstaben[3], "\n"; |
Beispiel:#!/usr/bin/perl @vector = (2,4,6,8,10,12); @slice = @vector; # (2,4,6,8,10,12) @slice = @vector[2,4]; # (6,10) @slice = @vector[3..5]; # (8,10,12) |
Mit Perl kann man:
Ein Hash ist eine Liste, die jeweils aus Name-Wert- Paaren besteht. Während bei einfachen Arrays die einzelnen Listenpunkte über eine Nummer ansprechbar sind (z.B. $Daten[2] = 3. Element des Arrays @Daten), erfolgt dies bei Hashs über den dazugehörigen Namen (z.B. $Daten('Name')):
Beispiel:#!/usr/bin/perl%Daten = ('Name','Martin','Alter',23,'Ort','Berlin'); # oder (seit Perl V5): Zuweisung durch =>, wobei der Wert als String interpretiert wird, also: %Daten = ('Name'=>'Martin','Alter'=>23,'Ort'=>'Berlin'); print $Daten{'Name'}, " ist ", $Daten{'Alter'}, " Jahre alt und wohnt in ", $Daten{'Ort'}; ergibt:Martin ist 23 Jahre alt und wohnt in Berlin |
Hashs werden mit einem Prozentzeichen % eingeleitet (Arrays mit einem @).
Siehe: Referenzen SelfHTML (werden ab Perl-Version 5.0 interpretiert).
In Perl gibt es eine Reihe von vordefinierten Variablen, welche einen bestimmten Wert zurückliefern. CGI stellt ebenfalls eine Reihe von Variablen zur Verfügung.
Diese werden je nach Programmiersprache angesprochen. Bei Perl gilt:
$ENV{'Umgebungsvariable'}
Variable | Erläuterung |
CONTENT_LENGTH | Länge des Strings, welcher bei der POST- Methode übergeben wird. |
CONTENT_TYPE | Mime- Type der Daten, welche bei der POST- Methode übergeben werden. Typisch für Formulare: application/x-www-form-urlencoded . |
GATEWAY_INTERFACE | Version des beim Server installierten CGI-Interfaces (Bsp.: CGI/1.1). |
HTTP_ACCEPT | Mime-Types, welche der Browser akzeptiert. |
HTTP_REFERER | URL der Seite, von der das Script aufgerufen wurde. Wird nicht von allen Browsern übermittelt. |
HTTP_USER_AGENT | Informationen zum Browser (Marke,Version,etc.) |
PATH_INFO | Informationen zum Pfad, falls das Script mit GET aufgerufen wird (relativ zu den im Server gesetzten Roots) |
PATH_TRANSLATED | Analog zu PATH_INFO, jedoch der Verzeichnisstruktur nach |
QUERY_STRING | Übermittelte Daten, falls das Script mit GET aufgerufen wird. application/x-www-form-urlencoded-kodiert. |
REMOTE_ADDR | IP- Adresse des Servers, über den das Script aufgerufen wird, falls es nicht derjenige ist, auf welchem das Script liegt. Wird nicht immer geliefert. |
REMOTE_HOST | Analog zu REMOTE_HOST, jedoch Domain statt IP. |
REMOTE_IDENT | Informationen zum Protokoll, falls der Server das Protokoll ident unterstützt. |
REMOTE_USER | Benutzernamen, welcher das Script aufgerufen hat. Nur, falls Server-Authentifizierung ein. |
REQUEST_METHOD | Enthält GET oder POST, je nachdem welche Art für das Übermitteln der Daten gewählt wurde. |
SCRIPT_NAME | URL des Scripts relativ zur Domain (Bsp.: /cgi-bin/da.cgi) |
SERVER_NAME | Name oder IP des Servers, auf welchem das Script liegt. |
SERVER_PORT | Portnummer des Servers (meistens 80). |
SERVER_PROTOCOL | Version des HTTP-Protokolls (Bsp.: HTTP/1.0) |
SERVER_SOFTWARE | Name der Server-Software. |
Die folgende Liste ist nicht vollständig!
Variable | Erläuterung |
Skalare | |
$_ | Aktueller Wert (Bsp.: @alphabet = (a..z); for(@alphabet){print $_, "\n";}). |
$. | Anzahl Zeilen der eingelesenen Datei. |
$/ | Eingabeseperator. |
$] | Version des installierten Perl-Interpreters. |
$! | aktuelle Fehlermeldung. |
$0 | Name des Scripts. |
$$ | Prozess-ID des Scripts. |
$^T | Zeitpunkt in msec, bei welchem das Script gestartet wurde. |
$& | Nach Anwenden eines regulären Ausdrucks: Wert, auf welchen das Suchmuster passt. |
$+ | Nach Anwenden eines regulären Ausdrucks mit Klammern: Inhalt der Klammer, auf welche das Suchmuster passt. |
$1,$2,... | Analog zu $+, liefert jedoch einzelne Fundstellen und nicht die letzte zurück. |
Arrays | |
@_ | Liste der bei einer Subroutine übergebenen Parameter. Einzelne Parameter sind ansprechbar mit $_[0],$_[1] etc. |
@ARGV | Parameter, die beim Aufruf des Scripts übergeben wurden. |
Hashs | |
%ENV | Komplette Rechnerumgebung. |
Umgebungsvariablen (ansprechen mit $ENV{'Umgebungsvariable'} !) | |
HOME | Directory, zu dem gesprungen werden soll, falls eine chdir- Anweisung fehlt (Unix). |
PATH | Directories, welche nach ausführbaren Programmen durchsucht werden sollen. |