[ Weiter ]        [ Zurück ]        [ Inhalt ]

Verdoppelte Wörter, nochmals

Das Problem mit den verdoppelten Wörtern aus Kapitel 1 hat hoffentlich Ihren Appetit auf die Kraft von regulären Ausdrücken geweckt. Ich habe außerdem am Anfang dieses Kapitels ein paar wilde Zeilen Kode aufgetischt, die ich die Lösung des Problems genannt habe. Jetzt, da Sie etwas Perl verstehen, können Sie hoffentlich die generelle Form verstehen          das <>, die drei s/.../.../ und das print. Es ist wahrscheinlich noch immer verwirrend. Wenn dies Ihr erster Kontakt mit Perl (und mit regulären Ausdrücken) ist, mag das Folgende etwas schwer verständlich sein.

Von nahem besehen, sind die regulären Ausdrücke gar nicht so kompliziert. Bevor wir das aber tun, ist es sinnvoll, die Problemstellung genauer zu umschreiben, und ein Beispiel der Ausgabe des fertigen Programms anzusehen:

»Verdoppelte Wörter« in modernem Perl



Nun zum Programm. Dieses Mal benutze ich einige der schmucken Features von modernem Perl, wie die »erweiterten« regulären Ausdrücke, die sich über mehrere Zeilen erstrecken können und Kommentare erlauben. Abgesehen davon ist das Beispiel identisch mit dem vom Anfang des Kapitels. Es werden einige Dinge benutzt, die wir noch nicht kennen. Ich werde diese kurz erläutern, muß aber für Details auf die Perl-Dokumentation (oder, wenn es sich um reguläre Ausdrücke handelt, auf Kapitel 7) verweisen. In der folgenden Beschreibung heißt »magisch« so etwas wie »wegen einem Perl-Feature, das Sie vielleicht noch nicht kennen«.

Am Schluß spuckt print aus, was im String übriggeblieben ist, mit Dateinamen und Escape-Sequenzen. Die while-Schlaufe wiederholt die ganze Verarbeitung mit allen Strings (es werden hier nicht Zeilen, sondern ganze Abschnitte gelesen) aus der Input-Datei.

 


¹    Diese Variable heißt $_ (jawohl, auch das ist eine Variable). $_ wird bei vielen Operatoren und Funktionen per Voreinstellung benutzt, wenn nicht explizit eine andere Variable angegeben wird.

²    unless bedeutet in Perl dasselbe wie if !, läßt sich aber (für Englisch sprechende Mitmenschen) viel leichter lesen. (Anm. d. Ü.)

³    Hier wird angenommen, daß die Datei nicht schon von vornherein ASCII-ESC-Zeichen enthält. Wenn dem nicht so ist, werden Zeilen ohne doppelte Wörter fälschlich ausgegeben.


[ Weiter ]        [ Zurück ]        [ Inhalt ]