Toll, vielen Dank.
Hab noch ne Frage:
Was bedeutet "[^$]+" ?
Das ist ein Schreibfehler.
$txt =~ s/$$([^$]+)$$/$hash{$1}/g;
wäre richtig (maskiertes $)
Also [^$]
Eine zeichenklasse sdie alles ausser "$" zulässt
Ich würde das Einschränken im Sinne von
[A-Za-z0-9_-]+
Es ist aber suboptimal:
Was wenn der Hashkey nicht existiert?
Wir verwenden besser s///eg mit einer sub
$txt =~ s/\$\$([A-Za-z0-9_-]+)\$\$/template_to_hash_replace($1)}/eg;
sub template_to_hash_replace{
my $var = shift;
if( exists $hash{$var} ){
return $hash{$var};
}
else{
return "TEMPLATE_ERROR(".$var.")");
}
}
mfg Beat