In Perl können mit Hilfe von regulären Ausdrücken bestimmte Zeichen oder Zeichenfolgen durch andere ersetzt werden:
Zeichenkette =~ s/Suchen/Ersetzen/(Optionen)
Mit Zeichenkette ist meistens eine Variable gemeint. Bei Suchen kann ein regulärer Ausdruck eingesetzt werden. Sollen mehrere Zeichen(folgen)/reguläre Ausdrücke gesucht/ ersetzt werden, sind diese mit einem senkrechten Strich | zu trennen. Bei Ersetzen Zeichenfolge notieren, welche den bei Suchen angegebenen Begriff ersetzen soll. Bei Optionen können mehrere Parameter gesetzt werden, wobei vor allem die ersten zwei von Bedeutung sind:
g: Es wird global gesucht/ ersetzt (ansonsten nur erste Fundstelle).
i: Gross-/ Kleinschreibung wird nicht unterschieden (case insensitive).
s: Weiche Zeilenumbrüche (\n) werden ignoriert.
m: Gegenteil von s.
x: Lange Muster dürfen mehrzeilig und mit Kommentaren notiert werden.
o: Muster wird nur einmal kompiliert. "Wird nur eingesetzt, wenn sich das Suchmuster beim Kompilieren schon bekannt ist und sich während des Programmdurchlaufs nicht mehr ändert."
Beispiele:$Text = "Die Temperatur betrug heute 37 Grad Celsius";$Text =~ s/[a-z]| //gi; #Alle Buchstaben und Leerzeichen werden ersetzt bzw. gelöscht $Text = "Die Temperatur betrug heute 37 Grad Celsius"; $Text =~ s/[^0-9]//g; #Alles ausser Zahlen wird ersetzt bzw. gelöscht $Text = "Daheim ist es am schönsten"; $Text =~ s/ö/\ö\;/g; |
Achtung: Den 'Sonderzeichen' ( +-?.*^$()[]{}|\ ) einen Backslash \ voranstellen! (s. zweites Beispiel, \ö\;)
Mehr Informationen zum Thema reguläre Ausdrücke gibt es im entsprechenden Kapitel.
Beispiel:foreach (@main) {if ($_ =~ /<!--comments-->/){ // Falls gefunden, neu schreiben und Listenpunkt anhängen print MAIN "<!--comments-->\n"; print MAIN "<li>$komplett<li>"; } else { print MAIN "$_"; // ansonsten aktuelles Element d. Arrays (vordefinierte Variable $_) schreiben } } |