<< spezielle Variablen | Inhalt | Reguläre Ausdrücke II >> |
Die Länge eines Strings kann man ganz einfach mit der Funktion length() bestimmen:
Mir Hilfe von .= kann man einen String an einen anderen anhängen: $string1.=$string2 Wer gewohnt ist $string1=$string1.$string2 zu schreiben, der sollte das besser sein lassen! Perl braucht dazu viel mehr Zeit. Der Grund: .= hängt am Ende des Strings an. Die zweite Methode hängt die beiden Strings zusammen und kopiert das Ergebnis dann in den ersten String. Also ab jetzt immer .= verwenden.
Beim +=-Operator spart man ebenfalls Zeit ein - jedoch nicht so viel als im Vergleich zu .=.
Der Vergleich von split-Operator mit regulären Ausdrücken liefert verschiedene Aussagen - je Problemstellung.
Will man einen String - nach einem Muster aufteilen, so ist es besser den split-Operator zu benutzen.
Will man eine bestimmte Anzahl von Elementen aus dem Anfang des Strings ziehen, so ist dies von der größe des zu durchsuchenden Strings abhängig. Falls der String recht groß ist, dann ist es besser nicht mehr den split-Operator zu verwenden. Ansonsten ist der split-Operator dafür sehr gut geeignet.
Will man ein ganz bestimmtes Element aus dem Ergebnis des Splittings haben, so kann man dies mit dem Zugriffsoperator [] erledigen (z. B.: (split(/\s+/,$string))[3]). Dieser ist jedoch langsamer als das Problem mit einem geeigneten regulären Ausdruck zu lösen:
Um Zeichenketten auf ihre Gleichheit zu überprüfen ist immer noch der eq-Operator der schnesllste:
Wird mit eq gearbeitet, so fährt man sicher, dass man so ziemlich das schnellste erwischt, falls man auf Gleichheit testen will. Wird keine Gleichheit erreicht, dann sind die regulären Ausdrücke gleich schnell. Bei Gleichheit verlieren die regulären Ausdrücke; sie sind dann nur noch halb so schnell.
Zum Finden von Teilstrings sind zwei weitere nützliche Operatoren index() und rindex() zu erwähnen. Diese testen einen String, ob im String ein angegebener Teilstring enthalten ist. Zurückgeliefert wird -1, falls der Teilstring nicht enthalten ist und der Index, an dem der Teilstring startet. index() bezieht sich dabei auf das erste Vorkommen des Teilstrings, rindex() auf das letzte Vorkommen. Die Syntax lautet: index($string, $teilString) bzw rindex($string, $teilString). Ein Beispiel:
Liefert:
Mit regulären Ausdrücken könnte man das wie folgt programmieren - was aber langsamer ist:
Um Teilstrings in einem String zu extrahieren und zu verändern, eignet sich der Operator substr(). Ein Beispiel an dem es klar wird:
Das ergibt:
Das gleiche mit regulären Ausdrücken und langsamer:
Man kann mit Hilfe von regulären Ausdrücken einzelne Zeichen ersetzen. Dazu bietet Perl eine speziellen Operator: tr///. Dieser eignet sich hervorragend, um einzelne Zeichen in andere umzuwandeln:
Liefert:
Es werden die Zeichen eins zu eins ausgetauscht: a wird zu b und o zu t. Mit Hilfe dieses Operators kann man ziemlich schnell einiges anstellen - z. B. um etwas zu verschlüsseln:
Wollte man so etwas mit s/// programmieren, so wäre dies sehr umständlich und sehr sehr langsam.
<< spezielle Variablen | Inhalt | Reguläre Ausdrücke II >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |