<< Einführung | Inhalt | skalare Variablen >> |
Zahlen | Strings | Sonderzeichen für "-Strings | Operatoren | Rangfolge der Operatoren |
Die einfachste Art von Daten, mit denen Perl arbeitet sind Zahlen und Zeichenketten (Strings).
In Perl können Zahlen sowohl als Ganzzahlen (Integer) als auch als Gleitkommazahlen (Float) dargestellt werden.
... und das sollte schon aufgefallen sein:
Bemerkung: Perl stellt intern Integer-Zahlen als Float dar! Dies bleibt aber ohne Auswirkungen für den Programmierer - falls er nicht unbedingt nach Befehlen sucht, die ganze Zahlen verarbeiten.
... und was fällt auf?
Sonderzeichen werden mit einem Backslash eingeleitet. Hier eine Liste davon:
Ausdruck | |
\n | neue Zeile (newline) |
\r | Rücklauf (return) |
\t | Tabulator |
\f | neue Seite (formfeed) |
\b | Backspace |
\v | vertikaler Tabulator |
\a | Tonsignal |
\e | Escape |
\007 | ASCII-Wert im Okatalsystem (\DreistelligeOktalzahl); hier: 007=Tonsignal |
\x7f | ASCII-Wert im Hexadezimalsystem (\xZweistelligeHexadezimalzahl); hier 7f=Del |
\cC | jede Contol-Sequenz \cZeichen; hier Control-C |
\\ | Backslash |
\" | doppelter Apostroph |
\l | der naechste Buchstabe wird klein geschrieben; Bsp.: "A\lBC"="AbC" |
\L | alles bis zum Sonderzeichen \E wird klein geschrieben; Bsp.: "AB\uCDE\EF"="ABcdeF" |
\u | der naechste Buchstabe wird groß geschrieben; Bsp.: "a\ubc"="aBc" |
\U | alles bis zum Sonderzeichen \E wird groß geschrieben; Bsp.: "ab\Ucde\Ef"="abCDEf" |
\E | beendet \L bzw. \U |
Ein Operator (z. B. +) macht aus einen oder zwei Werten (z. B. aus zwei Zahlen) einen neuen Wert (Bsp.: 4+5 liefert 9).
Operatoren für Zahlen sind:
Operator | Beispiel | Ergebnis | Bemerkung |
+ | 3+7 | 10 | |
- | 2.7-5 | -2.3 | |
* | 2*5.3 | 10.6 | |
/ | 1.2/0.3 | 4 | |
** | 2**3 | 8 | Potenzierung: 23 |
% | 10%3 | 1 | Achtung: Beide Werte werden vorher auf ganze Zahlen abgerundet; Bsp. 10.2%3.7=1 |
== | 7==8 | false | Test auf Gleichheit |
!= | 7!=8 | true | Test auf Ungleichheit |
< | 2<1 | false | |
<= | 3.5<=3.5 | true | |
>= | 4>3.5 | true | |
> | 2e12>-12 | true |
Operatoren für Strings sind:
Operator | Beispiel | Ergebnis | Bemerkung |
. | "hi"." "."world!" | "hi world!" | Zusammenhängen von Strings |
eq | "abc" eq "abc" | true | entspricht == bei Zahlen |
ne | "abc" ne "abc" | false | != bei Zahlen |
lt | "30" lt "7" | true | < bei Zahlen |
le | "3" le "33" | true | <= bei Zahlen |
gt | "aaaa" gt "b" | false | > bei Zahlen |
ge | "99" ge "99" | true | >= bei Zahlen |
cmp | "99" cmp "99" | 0 | liefert -1, 0, 1 je nachdem, ob das linke Argument kleiner, gleich oder größer als das rechte Argument ist |
x | "abc" x 3 | "abcabcabc" | Stringwiederholungen |
Wie in der Mathematik kann es auch beim Programmieren Komplikationen geben, wo erst einmal nicht so sicher ist, was gemacht werden soll. Zum Beispiel kann folgender Ausdruck 3+4*5 zwei Ergebnisse liefern: 35 oder 23. Wie in der Mathematik entscheidet Perl sich hier für die Punkt-vor-Strich-Regel (d. h. * hat höheren Rang als +). Doch gibt es - wie gesehen - viel mehr Operatoren als nur + und *. Deshalb wird eine Liste, in der die Rangfolge der Operatoren festgehalten ist, zur Hilfe gezogen. Außerdem wird die Assoziativität mit angegeben - auf die kommen wir sofort zu sprechen.
Die Operatoren sind hier nach Wichtigkeit bzw. Rang geordnet. Je weiter unten ein Operator in dieser Tabelle steht, desto höher ist sein Rang. Operatoren in der gleichen Zeile sind vom gleichen Rang. (Einige der Operatoren in der Tabelle sind noch nicht bekannt. Ferner können nicht alle auf skalare Daten angewendet werden.)
Assoziativität | Operator(en) |
keine | die Listen-Operatoren |
links | , (Komma) |
rechts | +=, = und andere Zuweisungsoperatoren |
rechts | ?: (tertiärer if/then/else - Operator) |
keine | .. (Bereichsoperator, Listenkonstruktor) |
links | || (logisches Oder) |
links | && (logisches Und) |
links | |, ^ (bitweises Oder, bitweises exklusives Oder) |
links | & (bitweises Und) |
keine | ==, !=, <=>, eq, ne, cmp (gleich-Operatoren) |
keine | <, <=, >, >=, lt, le, gt, ge (ungleich-Operatoren) |
keine | uniäre Operatoren - wie z. B. Funktionen mit einem Argument |
keine | -r und andere (Operatoren für Dateitests - ab Perl 5 sind diese auf der gleichen Stufe wie die unitären Operatoren) |
links | <<, >> (Bit-Verschiebung) |
links | +, -, . (plus, minus, Aneinanderhängen von Strings) |
links | *, /, %, x (mal, geteilt, modulo, Wiederholung von Zeichenketten) |
links | =~, !~ (stimmt überein, stimmt nicht überein) |
rechts | ** Potenzierung |
rechts | !, ~, - (logisches Nicht, bitweises Nicht, numerische Verneinung) |
keine | ++, -- (automatische Hoch- und Herunterzählen; als Präfixoperator) |
Beispiel für verschiedenrangige Operatoren (die Assoziativität spielt keine Rolle):
Bei Klammerung mit ( und ) kann man wie in der Mathematik die Rangfolge der Operatoren beieinflussen. Im obigen Beispiel muss man nur 3+4 in Klammern setzen, um 35 zu erhalten. Also (3+4)*5 ergibt 35. Damit wird zuerst der Term innerhalb der Klammer ausgewertet (nach den üblichen Regeln) und mit dem Ergebnis weitergerechnet. Perl verhält sich hier analog.
Je höher der Rang eines Operators ist, desto früher wird dieser ausgeführt. Bei gleichrangigen Operatoren wird die Reihenfolge der Operationen über die angegebene Assoziativität bestimmt.
Beispiel für gleichrangige Operatoren, die Assoziativität des Operators ist rechts:
Beispiel für gleichrangige Operatoren, die Assoziativität des Operators ist links:
Zahlen | Strings | Sonderzeichen für "-Strings | Operatoren | Rangfolge der Operatoren |
<< Einführung | Inhalt | skalare Variablen >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |