Pragma | Beschreibung |
---|---|
use strict | Warnung bei Nutzung von „unsauberen“ Programmierkonstrukten |
use warnings | Warnung bei Programmierkonstrukten die durch Perl verschieden interpretiert werden können |
Bedingungen (werden bei den meisten Konstrukten eingesetzt) können Vergleiche sein (größer, kleiner, gleich usw.), können aber auch beliebige andere Operationen sein (Zuweisungen, Rechenoperationen usw.).
Wichtig ist nur, dass es eine Operation ist und diese erfolgreich/richtig/wahr (true) oder falsch/fehlgeschlagen/unwahr (false) sein kann.
Es muss dabei kein true oder false zurückgegeben werden - es wird der Ausgang der Operation ausgewertet (der dann true oder false ist).
if (//Bedingung1//) { //Code1//; } elseif (//Bedinung2//) { //Code2//; } else { //Code3//; }
Syntax:
for (Initalisierung Zähler;Abbruchbedingung;Inkrementier-/Dekrementier-Anweisung)
{
Anweisung;
}
Beispiel:
for (my $i=0;$i<10;$i+=3) { print $i; }
Achtung: Wird das Pragma „strict“ verwendet muss für die Zählervariable der Gültigkeitsbereich angegeben werden → es muss also vor der Zählverariable my stehen → Beispiel: for (my i=0;$i<10;$i++)
Syntax:
while ( $a < 10 ) { Anweisungen; }
Syntax:
foreach //Index// (//Array//) { Code; }
Index: Variable in der der aktuelle Index (sowohl bei Arrays → numerisch, als auch bei Hashmaps → String)
Array: Name des Arrays
Alternativ kann der Index auch weggelassen werden:
foreach (//Array//) { Code; }
Syntax:
//rueckgabevariable//=&//Funktionsname// (//Paramter1//, //Parameter2//); sub //Funktionsname// { Code; (//Rückgabewert//); }
Beispiel:
rueggabewert=&Ausgabe ("Hallo","Doro"); sub Ausgabe { print "Als Einzel-Parameter: $_[0] $_[1]"; print "Alle Parameter mit einmal: $@"; (0); }
Auf übergebene Variablen kann nicht wie bei anderen Programmiersprachen durch zuvor als Übergabevariablen übergebene Bezeichner zugegriffen werden, sondern nur über das Array _ (@_).
Auf einzelne übergebene Variablen über $_[Index].
Achtung: @_ bzw. $_[Index] sind Pointer/Referenzen auf die Variablen die übergeben werden. Wird der Wert von $_[Index] geändert, ändert sich der Wert der übergebenen Variable auch.
Syntax: Variable=~Regulärer Ausdruck;
Beispiel:
$Line=~s/ä/ae/g;
$Line=~/ae/;
Erstes Beispiel: Suche alle (Option g am Ende) ä's im String der Variable $Line und ersetze sie durch ae.
Zweites Beispiel: Suche „ae“ im String in $Line → wenn vorhanden wird true zurückgegeben, wenn nicht false.
Operatoren:
Typ | Operator | Beschreibung |
---|---|---|
Suchen | =~/Suchstring/ | Überprüft ober der angegebene String in der links von =~ angegebenen Variable enthalten ist Syntax: Variable=~/Suchstring/ |
Ersetzen | =~s/Suchstring/Ersatzstring/Optionen | Ersetzt den Suchstring durch den Ersatzstring in der Variable links von =~ (der zu modifizierende String wird von dort ausgelesen und auch dort wieder hineingeschrieben). Syntax: Variable=~s/Suchstring/Ersatzstring/Optionen Optionen: i → Ignore Case - Ignoriere Groß- und Kleinschreibung -g → Global - Suche und Ersetze alle Vorkommen; Normalerweise wird nur das Erste erscheinen gesucht und ersetzt Hinweis: Es wird ohne Option „g“ nur das erste Aufreten des Suchstrings gefunden und ersetzt |
Zeichenklassen:
Pattern | Erklärung |
---|---|
. | Ein beliebiges Zeichen |
[Zeichenauswahl] | Ein Zeichen aus den vorgegebenen Beispiel: Tes[atl] Beispiel ergibt Tesa oder Test oder Testl Die Auswahl gilt nur für das Zeichen an der entsprechenden Position (es sei denn es folgen Pattern die den Gültigkeitsbereich erweitern). |
[Zeichenvon-Zeichenbis] | Zeichenklase - Bereich von Zeichen \ Beispiel: Bl[a-e] Beispiel matcht Bla, Blb, Blc, Bld, Ble. Die Auswahl gilt nur für das Zeichen an der entsprechenden Position (es sei denn es folgen Pattern die den Gültigkeitsbereich erweitern). |
\d | Dezimalzahl |
\D | Keine Ziffer (irgend ein anderes Zeichen) |
\w | Wort? - Ein Buschstabe, Zahl oder _ |
\W | Kein Buschtstabe, Zahl oder _ - sondern ein anderes Zeichen |
\s | Space? - Leerzeichen oder Newline (Zeilenumbruch) |
\S | Kein Space? - kein Leerzeichen oder Newline (Zeilenumbruch) |
Achtung: Pearl unterscheidet normalerweise zwischen Groß- und Kleinschreibung bei Pattern. Das bedeutet [abc] wird nicht auf ABC matchen.
Multiplikatoren beziehen sich immer auf das vorherghende Zeichen/Pattern und definieren wie oft er vorkommen kann bzw. muss. Multiplikatoren:
Multiplikator | Bedeutung |
---|---|
? | Einmal oder keinmal Das vorangegangene Pattern bzw. Zeichen kann einmal oder keinmal auftreten. Beispiel: Hall?o → matcht auf Hallo oder Halo (das zweite l kann einmal oder gar nicht vorhanden sein) |
* | Keinmal oder beliebig oft Das vorangegangene Pattern oder Zeichen kann kein mal oder beliebig oft auftreten (hintereinander weg). Beispiel: Hallo* → matcht auf Hallo, Hall, Hallooo |
+ | Einmal oder beliebig oft Das vorangegangene Pattern bzw. Zeichen kann einmal oder beliebig oft auftreten. Beispiel: Hal+o → Halo, Hallo, Halllo → das l einmal oder beliebig oft |
{x} | Genaue Anzahl mal. x ist eine Ziffer die definiert wie oft das voran gegangene auftreten muss und zwar exakt so oft. Beispiel: Hal{2}o → matcht Hallo → das l muss genau 2 mal hintereinander auftreten |
{x,y} | Mindestens x mal und maximal y mal auftreten. Das vorangegangene Pattern bzw. Buchstabe muss mindestens x mal (erster Wert in Klammern) und darf maximal y mal (zweiter Buchstabe) auftreten. |
Schlüsselwort | Beschreibung |
---|---|
Gibt einen Text aus | |
scalar | Sagt dem Compiler, dass ein Scalare verlangt wird. Syntax: @Bezeichner1=scalar Bezeichner2 Sinvoll wenn der Compiler das selbst nicht erkennen kann, zum Beispiel bei Zuweisungen zwischen Hash-Maps, Arrays oder Ausgaben. |
Operator | Beschreibung | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-Buchstabe | Dateien auf Eigenschaften prüfen Funktioniert wie das Test-Kommando der Bash.
|
||||||||||||||||||
=~ | Vergleichs- und Zuweisungsoperator bei der Benutzung von Vergleichen oder Ersetzungen Eine if-Operation auf eine Vergleichs- oder Ersetzungsanweisung gibt true oder false zurück (wenn der Such-/Ersetzungsstring vorhanden war). Bei Ersetzungsanweisungen bewirkt es gleichzeitig eine Zuweisung an die vor dem Operator =~ angegebene Variable |
Deklaration: Geltungsbereich Typ Bezeichner = Wert;
Typ | Wertebereich | Deklarationszeichen | Beschreibung |
---|---|---|---|
Skalar | Alles | $ | Undefinierter Standardtyp Kann Zahlen, Referenzen (Pointer), Objekte, Zeichenketten beinhalten. Zeichenketten:
|
Array | Alles durcheinander | @ | Array (Liste) aus Scalaren Zuweisung: @Name=(Wert1, Wert2, Wert3) Alles: @Name \\In dem Fall wird das Array als Array angesprochen und nicht ein einzelnes Element Einzelnes Element: $Name[Index] Zugriff erfolgt auf eine Skalare (gekennzeichnet durch $) und welche genau wird durch den Index definiert. Anzahl Elemente: $Name=@Name \\Array wird als Array angesprochen, Zielvaraiable ist aber ein Skalar. Der Compiler weiß dann das die Anzahl der Elemente verlangt wird (da ja nich das gesamte Array in dem Skalar gespeichert werden kann und kein Einzelement verlangt wurde) Anzahl Elemente: $Name=scalar @Name \\Mit scalar wird dem Compiler explizit mitgeteilt, dass ein Skalar erwartet wird (hilfreich wenn man die Anzahl in einem anderen Array speichern will oder sie ausgeben will). |
Hash | Beliebig | % | Ähnlich Array, benutzt aber Keys (Schlüsselwörter) als Index, statt Nummern. Hashes sind nach keiner Reihenfolge gespeichert (wichtig beim Ausgeben, sie müssen also noch sortiert werden). Zuweisung: %Bezeichner=(Key ⇒ Value, Key2 ⇒ Value2); * Bezeichner: Name der Variable * Key: Schlüssel (Index) dem der Wert zugewiesen wird * Value: Wert der dem Schlüssel (Key) zugeordnet wird Einzelnes Element: $Hash-Name{Key} Hash wird als Array angesprochen (es wird ja nur ein Element abgefragt → eine Skalare. Key ist in {} eingeschlossen, statt wie beim Array in [] Alle Schlüssel: keys %Hash-Name Rückgabewert ist ein Array mit den Schlüsseln Alle Values: values $Hash-Name Rückgabewert ist ein Array mit allen Values Hinweis: Die Rückgabewerte sind in einer beliebigen Reihenfolge |
Bezeichner | Bedeutung |
---|---|
$_ | Variable die genutzt wird, wenn keine Variable angegeben wurde Wird genutzt zum Beispiel in for-each-Schleifen ohne Angabe einer Variable in der die Werte gespeichert werden oder wenn eingelesen wird und keine Variable angegeben wurde. Das heißt man lässt bei Befehlen die eigentliche eine Variable voraussetzen die Variablenangabe weg |
Name | Erklärung |
---|---|
open() | Öffnet eine Datei zum Lesen/Schreiben Syntax: open (Filehandler, Operation, Datei)
Wenn Filehandler eine Skalare, Hash oder Array ist dann wird in diesen der File-Handler gespeichert. open(HANDLER,<,bla.txt); $aus=<HANDLER>; print "$aus"; |
close() | Schließt eine Datei Syntax: close FILEHANDLE; |
Interpolation:
In Zeichenketten die in “ stehen wird nach Steuerzeichen und Variablen gesucht und diese vor Ausgabe/Benutzung der Zeichenkette entsprechend interpretiert (bei Variablen durch den Inhalt der Variable ersetzt).
Bei Zeichenketten die in ' entfältl die Interpolation, Steuerzeichen und Variablen werden nicht interpretiert, sondern als Text angesehen.
Typ | Name | URL |
---|---|---|
Forum | - | http://www.perl-community.de/bat/poard/start |
Lehrbuch | - | http://www.mathe2.uni-bayreuth.de/perl/start.htm |