use Herbaer::Placeholders ; # Platzhalter ersetzen my $vorlage = 'Punkt ${#alpha}'; printsubst_placeholders
($vorlage); # "Punkt a" printsubst_placeholders
($vorlage); # "Punkt b" printsubst_placeholders
($vorlage); # "Punkt c"reset_counter
("alpha"); printsubst_placeholders
($vorlage); # "Punkt a"
Das Modul Herbaer::Placeholders
erleichtert es, Platzhalter für Zähler oder für zeitbezogene Werte in Zeichenketten durch Werte zu ersetzen.
Es gibt Platzhalter für Zähler, für Zeitangaben und für HASH-Werte.
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:
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.
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.
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.
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 ${#
. TYP
ERW
}
ist eine beliebige Folge von lateinischen Kleinbuchstaben, Großbuchstaben, Dezimalziffern oder dem Zeichen ERW
_
(Unterstrich).
kann auch leer sein. Die Zeichenfolge ERW
bestimmt den Zähler. TYP
ERW
dient dazu, verschiedene Zähler (gleicher Art) zu unterscheiden.ERW
bestimmt die Ziffernzeichenfolge, die Basis und die Mindestlänge der Darstellung des Zählerwertes. In der folgenden Übersicht der Zähler-Platzhalter stehen TYP
und BASE
für natürliche Zahlen in Dezimaldarstellung, LEN
gibt die Basis des Stellenwertsystems an, BASE
die Mindestlänge.LEN
${#decLEN
ERW
}
,${#decERW
}
Basis 10, Ziffernzeichenfolge alnum
${#hexLEN
ERW
}
,${#hexERW
}
Basis 16, Ziffernzeichenfolge alnum
, Hexadezimalzahl mit Kleinbuchstaben
${#HEXLEN
ERW
}
,${#HEXERW
}
Basis 16, Ziffernzeichenfolge ALNUM
, Hexadezimalzahl mit Großbuchstaben
${#alphaLEN
ERW
}
,${#alphaERW
}
Basis 26, Ziffernzeichenfolge alpha
, Folge von Kleinbuchstaben
${#ALPHALEN
ERW
}
,${#ALPHAERW
}
Basis 26, Ziffernzeichenfolge ALPHA
, Folge von Großbuchstaben
${#nBASE
_LEN
ERW
}
,${#nBASE
ERW
}
Ziffernzeichenfolge alnum
${#NBASE
_LEN
ERW
}
,${#NBASE
ERW
}
Ziffernzeichenfolge ALNUM
${#aBASE
_LEN
ERW
}
,${#aBASE
ERW
}
Ziffernzeichenfolge alpha
${#ABASE
_LEN
ERW
}
,${#ABASE
ERW
}
Ziffernzeichenfolge ALPHA
Ein Platzhalter ${#
, der nicht einem der genannte Typen entspricht, steht für eine Dezimalzahl.ERW
}
Platzhalter für Zeitangaben haben die Form ${t#
. Es gibt die folgenden Platzhalter für Zeitangaben:TYP
}
${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 haben die Form ${
. KEY
}
steht für eine beliebige nicht leere Folge von lateinischen Kleinbuchstaben KEY
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 "
enthält, wird der Platzhalter durch diesen Wert ersetzt.KEY
"
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 ${#
durch seinen Anfangswert ersetzt. KEY
}KEY
steht hier für den Wert von $key
. Beispiel:
use Herbaer::Placeholders; my $vorlage = 'Gesamt ${#dec_tot}, Gruppe ${#dec_sub}'; printsubst_placeholders
($vorlage), "\n"; printsubst_placeholders
($vorlage), "\n";reset_counter
("dec_sub"); printsubst_placeholders
($vorlage), "\n"; printsubst_placeholders
($vorlage), "\n";
gibt aus:
Gesamt 1, Gruppe 1 Gesamt 2, Gruppe 2 Gesamt 3, Gruppe 1 Gesamt 4, Gruppe 2
Neben anderen Programmen nutzt shortids.pl
(Quelltext) dieses Modul.