Bücher online kostenlos Kostenlos Online Lesen
Perl Programmierung - Grundkurs

Perl Programmierung - Grundkurs

Titel: Perl Programmierung - Grundkurs
Autoren: Barbara Hohensee
Vom Netzwerk:
erfolgreichen Mustervergleichs, diese Position wird mit der Funktion pos erfragt
     
     

 
 
 
Alternativen angeben
     
    Mit dem Muster
     
    /hallo|Hallo/
     
    kann nach beiden Worten gesucht werden. Die Suche gilt als erfolgreich, wenn eines der beiden Worte gefunden wird.
     

Angaben negieren
     
    Der nächste Ausdruck beschreibt alles ausser einem kleinen Buchstaben:
     
    /[^a-z]/
     
    Das Karet ändert seine Bedeutung, wenn es am Anfang eines Ausdrucks in eckigen Klammern steht.
     
     
    Anwendungsbeispiel:
     
    exit 1 if =~ /^[JjyY]/;
     
    oder
     
    exit 1 if =~ /^[JY]/i;
     
    im zweiten Beispiel wird duch das Anhängen des i die Gross- und kleinschreibung ignoriert
     

Tabelle der allgemeinen Modifizierer für reguläre Ausdrücke
     
Option
Beschreibung
 
 
 
i
Gross- und Kleinschreibung beim Mustervergleich nicht unterscheiden
m
Betrachtet den String als Folge von Zeilen. Die Zeichen ^ und $ bekommen eine etwas andere Bedeutung: Statt auf Anfang und Ende des Strings passen sie allgemein auf Zeilenenden, auch wenn diese mitten im String sind.
s
Betrachtet des String als eine Zeile. Entspricht der Standardeinstellung bis auf eine Ausnahme: Der Punkt . passt auch auf ein Zeilenende, was normalerweise nicht der Fall ist.
ms
Mischung aus m und s
x
Erweiterte reguläre Muster
     
     

Suchen und Ersetzen
     
    Zum Suchen verwendet man den Operator m und zm Ersetzen s.
    Mit der Option g wird nach allen Fundstellen im Text gesucht. Ohne die Angabe von g hört die Suche nach der ersten Fundstelle auf.
     
    /hallo/gi
     
    Ignoriert Gross- und Kleinschreibung und sucht nach allen Fundstellen.
     
    Mit dem Operator s für substitute geschieht das Ersetzen. Es müssen zwei Dinge angegeben werden.
    Was zu ersetzen ist und wodurch.
    Im Beispiel soll Das durch Dies ersetzt werden:
     
    my $zeile = "Das ist ein Text";
    $zeile =~ s/Das/Dies/;
     
    Mit der folgenden Anweisung hängen Sie ein Semikolon an das Ende der Zeile:
     
    $v =~ s/$/;/;
     
    Auch für das Ersetzen kann g als Option eingesetzt werden, um alles zu ersetzten.
     
    $text = s/ä/ae/g;                            Alle ä durch ae ersetzen
     

Übungen
     

Übung 1 : Mustervergleich
     
    Welche Zeichenfolgen erkennt der angegebene reguläre Ausdruck? Das heißt, welche Zeichenfolgen enthalten ein passendes Muster?
     
    Muster
1
2
3
4
5
aus
Haus
Aus
laust
auseinander
a us
aus+
Hau
auss
aUss
Hausseingang
ausau
aus*
Hau
auss
aUss
Hausseingang
a
a*
aaa
xyz
xax
ABC
bab
\baus
aus
Haus
auss
Hausseingang
aUss
[Tim|Tom|Tam]
Tim
|
zom
mat
TOm
     
    Lösung:
Am schwierigsten ist es wohl, daran zu denken, dass ein * für eine beliebige Wiederholung steht - also auch für gar keine Wiederholung, oder verständlicher ausgedrückt:
     

Übung 2: Texte umbauen
    Formulieren Sie Anweisungen mit dem Operator s , die einen Text wie angegeben umformen. Nehmen Sie dazu an, Sie hätten bereits eine Schleife programmiert, so dass in der Variablen $zeile eine Textzeile enthalten ist.

1.) Jede Zeile wird um ein Hash-Zeichen (einen Gartenzaun) # am Zeilenanfang erweitert.

2.) Jede Zeile wird mit einem Strichpunkt abgeschlossen.

3.) Ersetzen Sie alle doppelten Wörter, die unmittelbar in einer Zeile nacheinander folgen, durch ein einziges Exemplar. Aus Hallo Hallo Hallo ihr! " soll Hallo ihr! " werden.

4.) Jede Zeile bekommt einen führenden Gartenzaun und einen Strichpunkt an das Ende, aber nur, falls das letzte Zeichen der Zeile ein Ausrufezeichen ist. Aus den beiden Zeilen
     
    Meine Zeile!
    Noch eine Zeile
     
    soll Folgendes werden:
     
    #Meine Zeile!;
    Noch eine Zeile
     

Lösung zu 2: Texte umbauen
     
    Jede Zeile bekommt einen führenden Gartenzaun und einen Strichpunkt an das Ende, falls das letzte Zeichen der Zeile ein Ausrufezeichen ist.
     
    }#!/usr/bin/perl -w
    use strict;
     
    while(my $zeile = <>) {
        $zeile =~ s/^(.*!)$/#$1;/;
        print $zeile;
     
     
     
    Ersetzen Sie alle doppelten Wörter in einer Zeile durch ein einziges Exemplar.
     
    #!/usr/bin/perl -w
    use strict;
    while(
    my $zeile = <>) {
    $zeile =~ s/\b(\w+)(\s+\1)+/$1/;
    print $zeile;
    }
     
     
     
     
     
     
     
    HTML-Dateien updaten
     
    Im folgenden sollen alle HTML-Dateien in einem benutzerdefinierten Verzeichnis im Datumsfeld aktualisiert werden.
     
    In der letzten Zeile des HTML-Dokuments steht jeweils:
     
    letzte Änderung: 05.03.2003
     
    diese Zeile soll in jeder Datei aktualisiert werden auf das heutige
Vom Netzwerk:

Weitere Kostenlose Bücher