Programmbeispiel: Serienbrief
(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)
Zum Gebrauch von Variablen im Ersatztext betrachten wir ein nicht ganz ernst gemeintes Beispiel. Ich stelle mir ein Programm zur Produktion von Serienbriefen vor, das den folgenden Schema-Text benutzt:
Lieber =VORNAME=,
Sie haben einen =PLUNDER= gewonnen! Gratis!
Die ganze Familie =NACHNAME= freut sich über den =PLUNDER=!
Ja, =ARMLEUCHTER=, Sie Glücklicher! Beantworten Sie nur .....
Um dies für einen bestimmten Adressaten zu bearbeiten, würde das Programm Daten benötigen:
$vorn = "Tom";
$nachn = "Cruise";
$superpreis = "100% echten faux diamond";
und dann das Schema ausfüllen:
$brief =~ s/=VORNAME=/$vorn/g;
$brief =~ s/=NACHNAME=/$nachn/g;
$brief =~ s/=ARMLEUCHTER=/$vorn $nachn/g;
$brief =~ s/=PLUNDER=/wunderbaren $superpreis/g;
Der reguläre Ausdruck in jeder Substitution sucht nach einer bestimmten Marke und ersetzt diese durch den gewünschten Text, falls sie gefunden wird. Der Ersatztext wird in Perl genauso behandelt wie ein String in Anführungszeichen, er kann also - wie in allen vier Fällen oben - Variablen enthalten, die interpoliert werden. Zum Beispiel wird der unterstrichene Teil von s/=PLUNDER=/wunderbaren $superpreis/g exakt so interpretiert wie der String "wunderbaren $superpreis". Wenn es nur um einen Brief ginge, würde man dort natürlich direkt den gewünschten Text einsetzen. Mit dieser Methode lässt sich der Vorgang jedoch automatisieren, indem die Namen zum Beispiel aus einer Datei eingelesen werden.
Der /g-Modifikator (g für »global«) ist neu. Er bewirkt, dass s/.../.../ nach einer erfolgreichen Substitution im Text hinter dieser Ersetzung nach weiteren Treffern sucht (und weitere Ersetzungen vornimmt). Das wird gebraucht, wenn ein String das Suchmuster mehrfach enthält und wenn alle Vorkommen ersetzt werden sollen.
Das Resultat ist voraussehbar, eine humoristische Variante eines Briefes, den ich so oder ähnlich schon viel zu oft gelesen habe:
Lieber Tom,
Sie haben einen wunderbaren 100% echten faux diamond gewonnen! Gratis!
Die ganze Familie Cruise freut sich über den wunderbaren 100% echten faux diamond!
Ja, Tom Cruise, Sie Glücklicher! Beantworten Sie nur .....
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln