Thread Variable in String (5 answers)
Opened by ottto at 2012-06-06 14:26

pq
 2012-06-06 16:11
#158807 #158807
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wie gesagt, man sollte das nicht über direkte variablen lösen, sondern über einen hash.
statt $var1 benutze $map{var1}. dann kannst du es im skript benutzen und automatisiert im text ersetzen.
alles andere erfordert bei globalen package-variablen fummelei mit der symboltabelle oder bei lexikalischen variablen sogar eval.

also nochmal: wenn es nur ein paar von vorneherein feststehende variablen sind, die zu erstzen sind, schreibe sie stattdessen in einen hash und du kannst den lösungsansatz von mir verwenden.

wenn es nur die eine variable ist, kannst du auch folgendes verwenden:
$line =~ s/\$var1\b/$var1/g;

aber erfahrungsgemäss kommen da irgendwann weitere variablen hinzu, und die willst du dann nicht alle manuell so ersetzen.

die lösung sieht dann so aus (strict muss hierfür abgeschaltet werden):
$text =~ s/\$(\w+)/${ $1 }/g;

an der stelle fängt dein programm an, schlecht wartbar zu werden.

setze bitte so früh wie möglich auf einen hash.
ich spreche da wirklich aus erfahrung.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Variable in String