Herbaer::Placeholders


Übersicht

use Herbaer::Placeholders ;  # Platzhalter ersetzen
my $vorlage = 'Punkt ${#alpha}';
print subst_placeholders($vorlage);   # "Punkt a"
print subst_placeholders($vorlage);   # "Punkt b"
print subst_placeholders($vorlage);   # "Punkt c"
reset_counter("alpha");
print subst_placeholders($vorlage);   # "Punkt a"
  

Zweck

Das Modul Herbaer::Placeholders erleichtert es, Platzhalter für Zähler oder für zeitbezogene Werte in Zeichenketten durch Werte zu ersetzen.

Arten von Platzhaltern

Es gibt Platzhalter für Zähler, für Zeitangaben und für HASH-Werte.

Platzhalter für Zähler

Zählerwerte sind wie die Darstellung von Zahlen in einem Stellensystem. Als „Ziffern” werden neben den Dezimalziffern 0 bis 9 auch lateinische Kleinbuchstaben a bis z und Großbuchstaben A bis Z verwendet. Damit stehen 62 Ziffernzeichen zur Verfügung. Die Ziffernzeichen können aber in verschiedener Weise angeordnet werden und dadurch verschiedene Zahlenwerte darstellen:

Ziffernzeichenfolge alnum

Die Dezimalziffern 0 bis 9 stehen für die Zahlwerte 0 bis 9, die Kleinbuchstaben a bis z für die Zahlwerte 10 bis 35, die Großbuchstaben A bis Z für die Zahlwerte 36 bis 61.

Ziffernzeichenfolge ALNUM

Die Dezimalziffern 0 bis 9 stehen für die Zahlwerte 0 bis 9, die Großbuchstaben A bis Z für die Zahlwerte 10 bis 35, die Kleinbuchstaben a bis z für die Zahlwerte 36 bis 61.

Ziffernzeichenfolge alpha

Die Kleinbuchstaben a bis z stehen für die Zahlwerte 1 bis 26, die Großbuchstaben A bis Z für die Zahlwerte 27 bis 52, die Dezimalziffern 0 bis 9 für die Zahlwerte 53 bis 62. Es gibt kein Ziffernzeichen für den Zahlenwert 0.

Ziffernzeichenfolge ALPHA

Die Großbuchstaben A bis Z stehen für die Zahlwerte 1 bis 26, die Kleinbuchstaben a bis z für die Zahlwerte 27 bis 52, die Dezimalziffern 0 bis 9 für die Zahlwerte 53 bis 62. Es gibt kein Ziffernzeichen für den Zahlenwert 0.

Mit 62 Ziffernzeichen sind Stellenwert-System mit der Basis 2 bis zur Basis 62 möglich. Es werden immer nur die ersten „basis” Ziffernzeichen einer Ziffernzeichenfolge benutzt. Ein Zähler kann eine Mindestzahl der Ziffernzeichen haben (Mindestlänge). Ein Zähler beginnt (bei der ersten Ersetzung des Platzhalters) mit dem Zahlwert 1 oder im Falle der Ziffernzeichenfolgen alpha oder ALPHA mit der kleinsten Zahl, die mit der Mindestlänge an Ziffernzeichen dargestellt werden kann.

Ein Platzhalter für Zähler hat die Form ${#TYPERW}. ERW ist eine beliebige Folge von lateinischen Kleinbuchstaben, Großbuchstaben, Dezimalziffern oder dem Zeichen _ (Unterstrich). ERW kann auch leer sein. Die Zeichenfolge TYPERW bestimmt den Zähler. ERW dient dazu, verschiedene Zähler (gleicher Art) zu unterscheiden.

TYP bestimmt die Ziffernzeichenfolge, die Basis und die Mindestlänge der Darstellung des Zählerwertes. In der folgenden Übersicht der Zähler-Platzhalter stehen BASE und LEN für natürliche Zahlen in Dezimaldarstellung, BASE gibt die Basis des Stellenwertsystems an, LEN die Mindestlänge.

${#decLENERW} ,${#decERW}

Basis 10, Ziffernzeichenfolge alnum

${#hexLENERW} ,${#hexERW}

Basis 16, Ziffernzeichenfolge alnum, Hexadezimalzahl mit Kleinbuchstaben

${#HEXLENERW} ,${#HEXERW}

Basis 16, Ziffernzeichenfolge ALNUM, Hexadezimalzahl mit Großbuchstaben

${#alphaLENERW} ,${#alphaERW}

Basis 26, Ziffernzeichenfolge alpha, Folge von Kleinbuchstaben

${#ALPHALENERW} ,${#ALPHAERW}

Basis 26, Ziffernzeichenfolge ALPHA, Folge von Großbuchstaben

${#nBASE_LENERW} ,${#nBASEERW}

Ziffernzeichenfolge alnum

${#NBASE_LENERW} ,${#NBASEERW}

Ziffernzeichenfolge ALNUM

${#aBASE_LENERW} ,${#aBASEERW}

Ziffernzeichenfolge alpha

${#ABASE_LENERW} ,${#ABASEERW}

Ziffernzeichenfolge ALPHA

Ein Platzhalter ${#ERW}, der nicht einem der genannte Typen entspricht, steht für eine Dezimalzahl.

Platzhalter für Zeitangaben

Platzhalter für Zeitangaben haben die Form ${t#TYP}. Es gibt die folgenden Platzhalter für Zeitangaben:

${t#ts}

Ein „Zeitstempel” im Format JJJJMMDDhhmmss, zum Beispiel 20200409125225.

${t#ds}

Ein „Datumstempel” im Format JJJJMMDD, zum Beispiel 20200409.

${t#time}

Eine Zeitangabe im üblichen XML-Format JJJJ-MM-DDThh:mm:ss, zum Beispiel 2020-04-09T12:52:25.

${t#tm}

Eine Uhrzeitangabe im üblichen XML-Format hh:mm:ss, zum Beispiel 12:52:25.

${t#date}

Eine Datumangabe im international üblichen Format JJJJ-MM-DD, zum Beispiel 2020-04-09.

${t#date}

Der Monat im Format JJJJ-MM, zum Beispiel 2020-04.

${t#year}

Das Kalenderjahr, zum Beispiel 2020.

${t#datum}

Das Datum im Format DD.MM.JJJJ, wie in Deutschland üblich, zum Beispiel 09.04.2020

${t#zeit}

Die Uhrzeit im Format hh:mm zum Beispiel 12:52

Platzhalter für HASH-Werte

Platzhalter für HASH-Werte haben die Form ${KEY}. KEY steht für eine beliebige nicht leere Folge von lateinischen Kleinbuchstaben a bis z, Großbuchstaben A bis Z, Dezimalziffern 0 bis 9 und dem Zeichen _ (Unterstrich).

Wenn der HASH, der der Funktion subst_placeholders als zweites Argument als Referenz übergeben wird, einen Wert unter dem Schlüssel "KEY" enthält, wird der Platzhalter durch diesen Wert ersetzt.

Funktionen

subst_placeholders ($vorlage) ,subst_placeholders ($vorlage, $werte)

Ersetzt Platzhalter in der Vorlage. Der Parameter $vorlage kann eine Referenz oder eine Zeichenkette (skalarer Wert) sein. Wenn $vorlage eine Zeichenkette ist, dann ist das Ergebnis eine neue Zeichenkette, in der die Platzhalter durch Werte ersetzt sind.

Wenn $vorlage eine Referenz ist, dann ist das Ergebnis eine Referenz auf dasselbe Objekt (Skalar, Array, Hash, Referenz).

Wenn $vorlage einen Hash referenziert, dann wird für jeden Schlüssel subst_placeholders mit dem Wert unter dem Schlüssel als erstem Argument aufgerufen und der Hash-Wert durch das Ergebnis ersetzt.

Wenn $vorlage ein Array referenziert, dann wird für jedes Array-Element subst_placeholders mit dem Array-Element als erstem Argument aufgerufen und das Array-Element durch das Ergebnis ersetzt.

Wenn $vorlage einen skalaren Wert referenziert, dann wird subst_placeholders mit dem referenzierten Wert als erstem Argument aufgerufen und das Ergebnis dem Ziel der Referenz zugewiesen.

Der optionale Parameter $werte referenziert einen Hash, dessen Einträge die Werte sind, durch die die HASH-Werte-Platzhalter ersetzt werden.

reset_counter ($key)

Setzt den Zähler mit der Kennung $key zurück. Beim nächsten Aufruf von subst_placeholders wird der Platzhalter ${#KEY} durch seinen Anfangswert ersetzt. KEY steht hier für den Wert von $key. Beispiel:

use Herbaer::Placeholders;
my $vorlage = 'Gesamt ${#dec_tot}, Gruppe ${#dec_sub}';
print subst_placeholders ($vorlage), "\n";
print subst_placeholders ($vorlage), "\n";
reset_counter("dec_sub");
print subst_placeholders ($vorlage), "\n";
print subst_placeholders ($vorlage), "\n";
        

gibt aus:

Gesamt 1, Gruppe 1
Gesamt 2, Gruppe 2
Gesamt 3, Gruppe 1
Gesamt 4, Gruppe 2
        

Anwendungen

Neben anderen Programmen nutzt shortids.pl (Quelltext) dieses Modul.