CGI: Wichtige Funktionen für Variablentypen
Für die einzelnen Variablentypen existieren in Perl spezifische Funktionen, welche der Manipulation der Variablen dienen oder Information zu ihnen bereithalten. Mithilfe dieser Funktionen kann man die entsprechenden Variablen sehr effektiv in Szene setzen.Arithmetische Funktionen
Im Folgenden werden sämtliche mathematische Funktionen aufgelistet, welche ohne Einbindung weiterer Module wie z.B.math
in Perl verfügbar sind:
Funktion | Parameter | Beschreibung/Rückgabewert | Beispiel |
---|---|---|---|
abs | beliebige Zahl | Ermittelt den Positivwert der Zahl und gibt ihn zurück | $Ergebnis = abs(-12.234); |
atan2 | 1. beliebige Zahl x 2. beliebige Zahl y | Ermittelt den Arcus-Tangens aus Quotient y/x und gibt ihn zurück | $Ergebnis = atan2(1.234,2.345); |
cos | beliebige Zahl | Ermittelt den Cosinuswert der Zahl und gibt ihn zurück | $Ergebnis = cos(0); |
exp | beliebige Zahl | Ermittelt den Exponential-Wert der Zahl und gibt ihn zurück; Umkehrfunktion von log | $Ergebnis = exp(1); |
hex | Hexadezimale Zeichenkette | Ermittelt den Dezimalwert einer hexadezimalen Zeichenkette und gibt ihn zurück | $Ergebnis = hex("FE"); |
int | Zeichenkette oder beliebige Zahl | Ermittelt den ganzzahligen Anteil der Zeichenkette oder Zahl und gibt ihn zurück | $Ergebnis = int(1.234); |
log | beliebige Zahl | Ermittelt den Logarithmus naturalis der Zahl und gibt ihn zurück; Umkehrfunktion von exp; | $Ergebnis = log(1); |
oct | Zeichenkette mit Oktalzahl | Ermittelt den Dezimalwert einer Zeichenkette mit Oktalzahl und gibt ihn zurück | $Ergebnis = oct("550"); |
rand | (obere Grenze n des Wertebereichs) | Ermittelt bei Verzicht auf Parameter eine Zufallszahl zw. 0 und 1; andernfalls zw. 0 und n; n kann auch vorher mit srand() festgelegt werden; gibt Zufallszahl zurück | $Ergebnis = rand(12); |
sin | beliebige Zahl | Ermittelt den Sinuswert der Zahl und gibt ihn zurück | $Ergebnis = sin(1); |
sqrt | beliebige Zahl > 0 | Ermittelt die Quadratwurzel der Zahl und gibt sie zurück | $Ergebnis = sqrt(16); |
srand | beliebige Zahl | Legt obere Grenze n des Wertebereichs für rand() fest, wobei Ganzzahl von n ermittelt wird; kein Rückgabewert | srand(12); $Ergebnis = rand(); |
Stringspezifische Funktionen
Es gibt eine Reihe von Funktionen für Zeichenketten, wobei die wichtigsten in der folgenden Übersicht kurz erläutert werden:Funktion | Parameter | Rückgabewert | Beschreibung | Beispiel |
---|---|---|---|---|
chomp | Zeichenkette | Anzahl der entfernten Zeichen | Entfernt letztes Zeichen einer Zeichenkette, wenn dieses in $/ (Kette von Seperatoren, standardwert: n) enthalten ist | chomp("abn"); |
chop | Zeichenkette | Entferntes Zeichen | Entfernt stets letztes Zeichen einer Zeichenkette | chop("abc"); |
chr | Zeichenwert (numerisch) | Entsprechendes ASCII-Zeichen | Ermittelt zum Zeichenwert entsprechendes ASCII-Zeichen | $Zeichen = chr(64); |
index | 1. zu durchsuchende Zeichenkette 2. zu suchende Zeichenkette 3. optinal: numerische Startposition der Suche (Standard: 0) | Position, an der gesuchte Zeichenkette gefunden wurde, -1, wenn nicht gefunden | Sucht ohne Anwendung regulärer Ausdrücke in einer Zeichenkette nach einer beliebigen (Teil-)Zeichenkette; optional kann eine Startposition angegeben werden | $Position = index("abcd","bc"); |
lc | Zeichenkette | Veränderte Zeichenkette | Wandelt alle Großbuchstaben (A-Z) in entsprechende Kleinbuchstaben (a-z) um | $String = lc("ABC"); |
lcfirst | Zeichenkette | Veränderte Zeichenkette | Wandelt erstes Zeichen -wenn Großbuchstabe (A-Z)- in entsprechenden Kleinbuchstaben (a-z) um | $String = lcfirst("abc"); |
length | Zeichenkette | Anzahl der Zeichen (Länge der Zeichenkette) | Ermittelt die Anzahl der Zeichen in einer Zeichenkette | $Laenge = length("abcd"); |
ord | ASCII-Zeichen | Entsprechender Zeichenwert (numerisch) | Gegenstück zu chr | $Zwert = ord("@"); |
pos | Zeichenkette | Jeweilige Position nach Treffer für reg. Ausdruck | Ermittelt die jeweilige Stelle nach einem gefundenen Suchmuster (reg. Ausdrücke) | $String = "abcd"; if($String =~ m/cd/g) { $StartPos = pos($String); } |
reverse | Zeichenkette | Veränderte Zeichenkette | Dreht die Zeichenreihenfolge der Zeichenkette um | $Umgekehrt = reverse("abcd"); |
split | 1. regulärer Ausdruck als Definition für Trennstellen 2. Zeichenkette | Liste einzelner Teile aus Zeichenkette | Zerteilt eine Zeichenkette in (mehrere) Teilzeichenketten, wobei als Trennstelle ein regulärer Ausdruck übergeben werden muss;ist Trennstelle nicht vorhanden, wird gesamte Zeichenkette zurückgegeben | @Zeichen = split(/ /,"a b c"); |
substr | 1. Zeichenkette für Extraktion 2. Startposition des Extrakts in Zeichenkette 3. optinal: Anzahl der Zeichen des Extrakts 4. optional: Ersatzzeichenkette | Extrakt aus Zeichenkette | Extrahiert aus einer Zeichenkette eine (Teil-)Zeichenkette ab einer bestimmten Startposition bis zum Ende der Zeichenkette; optional können Länge(!) des Extrakts und eine Zeichenkette, welche anstelle der Teilzeichenkette treten soll, angegeben werden | $Sub = substr("abcdef",1,2); substr("abcdef",1,2,"BC"); |
uc | Zeichenkette | Veränderte Zeichenkette | Gegenstück zu lc | $String = uc("abcd"); |
ucfirst | Zeichenkette | Veränderte Zeichenkette | Gegenstück zu lcfirst | $String = ucfirst("aBC"); |
Array- bzw. listenspezifische Funktionen
Eine Übersicht aller array- bzw. listenspezifischer Funktionen:Funktion | Parameter | Rückgabewert | Beschreibung | Beispiel |
---|---|---|---|---|
chomp | Array | Anzahl der entfernten Zeichen | Entfernt letztes Zeichen aller Arrayelemente (String), wenn dieses in $/ (Liste von Seperatoren, standardwert: n) enthalten ist | @Array = ("String1n", "String"); chomp(@Array); |
chop | Array | Entferntes Zeichen des letzten Arrayelements | Entfernt letztes Zeichen des letzten Arrayelements | @Array = ("String1n", "String"); chop(@Array); |
grep | 1. Bedingung für Extraktion der Elemente (z.B.: reg. Ausdruck) 2. Array/Liste | Liste der extrahierten Elemente, welche Bedingung aus 1. Parameter erfüllen | Extrahiert Elemente aus einem Array/Liste, wobei dieser Vorgang an eine Bedingung geknüpft ist | @Array = ("Str_1", "Str2", "Str_3"); @Elements = grep(/_/,@Array); |
join | 1. Zeichen oder Zeichenkette als Trennung der Elemente 2. Array/Liste | Zeichenkette mit allen Elementen des Arrays/Liste getrennt durch Zeichen(folge) im 1. Parameter | Fügt die Elemente eines Arrays/einer Liste zu einer Zeichenkette zusammen, wobei der Wert des 1. Parameters als Trennung dient | @Array = ("String1", "String2"); $String = join("_",@Array); |
map | 1. Befehl (z.B. Funktion), der auf alle Elemente ausgeführt werden soll 2. Array/Liste | Verändertes Array/veränderte Liste | Führt den Befehl des 1. Parameters auf alle Elemente des Arrays/der Liste aus | @Array = ("String1", "String2"); @Array = map(lcfirst,@Array); |
pop | Array | Gelöschtes Element | Entfernt das letzte Element des Arrays | @Array = ("String1", "String2"); pop(@Array); |
push | 1. Array 2. n Elemente, die dem Array angehängt werden sollen | Anzahl der Elemente des verlängerten Arrays | Fügt einem Array n Elemente am Ende an, wobei n >= 0 sein kann | @Array = ("String1"); push(@Array, "String2"); |
reverse | Array/Liste | Verändertes Array/veränderte Liste | Dreht die Reihenfolge der Elemente im Array/in der Liste um | @Array = ("String1",2); @Array = reverse(@Array); |
shift | Array | Gelöschtes Element | Entfernt das erste Element des Arrays | @Array = ("String1", "String2"); shift(@Array); |
sort | Array/Liste Oder: 1. Algorithmus für das Sortieren 2. Array/Liste | Sortiertes Array/sortierte Liste | Sortiert die Elemente eines Arrays/einer Liste alphabetisch oder nach einem selbst definierten Algorithmus, welcher meist in einer separaten Subroutine notiert wird | @Array = ("String2", "String1"); @Array = sort(@Array); |
splice | 1. Array/Liste 2. Index des (1.) zu löschenden Elements 3. optinal: Anzahl der zu löschenden Elemente 4. optinal: Liste von n Elementen, welche (anstelle der gelöschten) eingefügt werden sollen | Liste der gelöschten Elemente | Löscht Elemente ab im 2. Parameter angegebener Position. Wird der 3. Parameter weggelassen, werden alle Elemente ab im 2. Parameter angegebener Position gelöscht, sonst n viele Elemente, welche bei Angabe des 4. Parameters durch diese ersetzt werden. | #2. Elem. löschen: @Array = ("String1", "String2", "String3"); splice(@Array, 1, 1); #2.Elem. ersetzen: @Array = ("String1", "String2", "String3"); splice(@Array, 1, 1, "String4"); |
undef | Element, dessen Wert entfernt wird | "undef" | Entfernt den Wert des Elements (nicht das Element selbst!) | @Array = ("String1", "String2"); undef($Array[1]); |
unshift | 1. Array 2. Liste von n Elementen, welche am Beginn des Arrays eingefügt werden sollen | Anzahl der Elemente des verlängerten Arrays | Fügt einem Array n Elemente am Beginn hinzu, wobei n >= 0 sein kann | @Array = ("String1", "String2"); unshift(@Array, "String0"); |
Hashspezifische Funktionen
Einige arrayspezifische Funktionen, welche hier nicht erwähnt werden, sind auch auf Hashes anwendbar, wobei jedoch die Schlüssel-Wert-Paarungen aufgelöst, d.h. das Hash im Array-Kontext bewertet, wird. Dies führt ggf. nicht zum gewünschten Ergebnis.Sämtliche Funktionen für assoziative Arrays sind im Folgenden aufgelistet:
Funktion | Parameter | Rückgabewert | Beschreibung | Beispiel |
---|---|---|---|---|
chomp | Hash | Anzahl der entfernten Zeichen | Entfernt letztes Zeichen aller Hashwerte (String), wenn dieses in $/ (Liste von Seperatoren, standardwert: n) enthalten ist | %Hash = (P1 => "Str_1n", P2 => "Str_2"); chomp(%Hash); |
chop | Hash | Entferntes Zeichen des letzten Hashwerts | Entfernt letztes Zeichen des letzten Hashwerts | %Hash = (P1 => "Str_1", P2 => "Str_2"); chop(%Hash); |
delete | Schlüssel des zu löschenden Elements | Wert des gelöschten Elements; undefined, wenn kein Element gelöscht wurde | Löscht die Element-Paarung mit dem Schlüssel des Parameters | %Hash = (P1 => "Str_1", P2 => "Str_2"); delete($Hash{"P2"}); |
each | Hash | Liste aus Name und Wert oder nur Schlüssel des nächsten Elementpaars | Ermittelt das aktuell nachfolgende Elementpaar; häufig in Verbindung mit Schleifen verwendet | #Rückgabe im Skalar: %Hash = (P1 => "Str_1", P2 => "Str_2");while ($Key = each(%Hash)) { print "$Key: $Hash{$Key}<br>n"; } #Rückgabe in Liste: while (($Key, $Value) = each(%Hash)) { print "$Key: $Value<br>n"; } |
exists | Schlüssel des Elementpaars | true/false, wenn Hashschlüssel existiert/nicht existiert | Ermittelt, ob der übergebene Schlüssel Element vom Hash ist; häufig in Verbindung mit bedingten Anweisungen verwendet (if-Abfrage); lässt sich entsprechend negieren | %Hash = (P1 => "Str_1", P2 => "Str_2"); if(! exists($Hash{"P3"})) { $Hash{"P3"} = "Str_3"; } |
keys | Hash | Liste mit allen Schlüsselnamen des Hashs | Ermittelt alle Schlüsselnamen eines Hashes und gibt sie in einer Liste zurück | %Hash = (P1 => "Str_1", P2 => "Str_2"); @Keys = keys(%Hash); |
undef | Schlüssel des Elementpaars, dessen Wert entfernt wird | "undef" | Entfernt den Wert des Hashpaars (nicht das Hashpaar selbst!) | %Hash = (P1 => "Str_1", P2 => "Str_2"); undef($Hash{"P1"}); |
values | Hash | Liste mit allen Werten des Hashs | Ermittelt alle Werte eines Hashes und gibt sie in einer Liste zurück | %Hash = (P1 => "Str_1", P2 => "Str_2"); @Values = values(%Hash); |
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Datenübertragung zwischen HTML und CGI
Über uns

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