Perl – Platzhalter in Textstrings ersetzen
Dieses Codebeispiel zeigt wie man in Textstrings, die mit speziellen Platzhaltern durchsetzt sind, Werte aus dem Script einfügen kann.
Codebeispiel mit Erläuterungen
Ausgangssituation:
Es gibt in der Datenbank oder einer Sprachdatei im Textformat abgelegte Texttausgaben. Nun kann es aber sein, das man in diese Textausgaben vom Script generierte Daten einfügen möchte. Hierzu sind zunächst Platzhalter in den Textstring einzufügen, Siehe Beispiel:
$platzhaltertxt = 'Das ist <%1%> aus <%2%> in <%4%>. <%2%> ist eine Stadt im <%3%>.';
Diese Platzhalter sollen nun mit diesen Werten gefüllt werden, diese könnten hier z.B. aus einer Mitgliederdatenbank stammen und als Profilausgabe genutzt werden.
Helmut, Brand-Erbisdorf, Erzgebirge, Sachsen
Wie aus dem Plathaltertext ersichtlich gibt es hier zweimal den Platzhalter mit der Nr. 2 aber nur 4 Werte die an die function zum parsen der Textstrings übergeben werden. Um die Werte später voneinander zu trennen sind diese im Subroutinenaufruf mit einem Trennzeichen | verbunden.
Der Subroutinenaufruf:
print insert_text_vars($platzhaltertxt, "Helmut|Brand-Erbisdorf|Erzgebirge|Sachsen");
In der Subroutine selbst prüft man nun zuerst ob überhaupt Platzhalterdaten übergeben wurden. Wenn ja, in Array zerlegen mittels split und die Anzahl an Arrayelementen ermitteln.
my $anzahl = 0; if ($ersatz ne '') { @insert = split(/\|/, $ersatz); unshift(@insert, ''); $anzahl = @insert; }
Wurde eine Anzahl > 0 festgestellt wird der eigentliche Parserblock aufgerufen. Dieser ersetzt hier die Zahlen des Platzhalters mit dem passenden Arrayelement.
if ($anzahl > 0) { $text =~ s/<%([0-9])%>/$insert[$1]/sg; }
über
return $text;
erhält man nun die Ausgabe:
„Das ist Helmut aus Brand Erbisdorf in Sachsen. Brand-Erbisdorf ist eine Stadt im Erzgebirge.“
Hier das komplette Script:
#!/usr/bin/perl #Fehlerausgabe an Browser use CGI::Carp qw(fatalsToBrowser); use strict; print "Content-type: text/html\n\n"; my $platzhaltertxt = 'Das ist <%1%> aus <%2%> in <%4%>. <%2%> ist eine Stadt im <%3%>.'; print insert_text_vars($platzhaltertxt, "Helmut|Brand-Erbisdorf|Erzgebirge|Sachsen"); sub insert_text_vars { my $text = shift || ''; my $ersatz = shift || ''; my (@insert); my $anzahl = 0; if ($ersatz ne '') { @insert = split(/\|/, $ersatz); unshift(@insert, ''); $anzahl = @insert; } if ($anzahl > 0) { $text =~ s/<%([0-9])%>/$insert[$1]/sg; } return $text; }
Hier das selbe Script noch einmal, aber als PHP Version
Weitere Beiträge
iPhone 15, Apple Watch Series 9 und Ultra 2 bei Amazon gelistet

Die brandneuen Apple-Geräte sind rechtzeitig zum Start des Verkaufs nun auch bei Amazon verfügbar. Ab sofort kann man das iPhone 15, iPhone 15 Plus, iPhone 15 Pro und iPhone 15 Pro Max, sowie die Apple Watch Series 9 und die Apple Watch Ultra 2 bestellen. Auch wenn die aktuellen Modelle nicht schneller geliefert werden, gibt […]
GoodNotes 6 mit neuen Funktionen: KI-Notizen, Mathe-Assistent, dynamischen Vorlagen

GoodNotes 6: Aktuell wurde die neue Version der beliebten Notiz-App vorgestellt. Die Funktionalität ist nun plattformübergreifend auch für Windows und Android verfügbar. Außerdem spendieren die Macher einige KI-basierte Funktionen. Damit wird die beliebte App auch teurer. Es wird auf ein Jahresabonnement für alle Funktionen umgestellt.
Audible Hörbuch herunterladen: So sparen Sie Datenvolumen auf dem Handy

Audible Hörbuch herunterladen. Möchten Sie Hörbücher von Audible unterwegs auf Ihrem Handy hören, ohne Ihr Datenvolumen zu verbrauchen? Wenn Sie ein begeisterter Hörbuch-Fan sind, wissen Sie, dass das Streaming von Hörbüchern auf Ihrem Mobiltelefon schnell zu einem Datenvolumen-Problem führen kann. Eine Lösung für dieses Problem ist das Herunterladen von Audible-Hörbüchern auf Ihr Smartphone.
Prime Day 2023: Auf die Plätze. Fertig. Los!

Der neue Prime Day 2023 steht in den Startlöchern. Amazon bietet derzeit bereits viele attraktive Rabatte an. Schnäppchenjäger sollten schon jetzt bei Amazon vorbeischauen. Hier kann schon vor dem Shopping-Event kräftig gespart werden. Aufgeweckte Shopper finden sicherlich einige interessante Angebote.
Keine Kommentare vorhanden