Thread String interpretieren, Variable in Variable
(17 answers)
Opened by dasa at 2008-08-19 12:59
Hallo zusammen,
gleich zu meiner Entschuldigung, ich programmiere z.Z. an einem TWiki Plugin, und dies verwendet teilweise unschöne Syntax, und genau diese ist auch die Quelle meines Problems: Also erstmal lese ich vom System einen String ein: Code (perl): (dl
)
1 2 3 4 5 6 7 8 my $output = &TWiki::Func::getPreferencesValue( "MYPLUGIN_OUTPUT" ); # Dies hat den Inhalt: # __[[$MYWEB][$MYTOPIC]]__ # nun wird im System gerade die beiden Variablen auch gesetzt my $MYWEB = "TWiki"; my $MYTOPIC = "WebHome"; Nun die Frage (wohl schon einigen nach dem Beispiel klar), ich möchte nun gern dass der Output- String die Variablen selbst interpretiert, ohne dass ich mit Regex zur Hand muss. Also irgendwas wie Code (perl): (dl
)
1 2 $output = do something with $output; print $output; # Gibt dann __[[TWiki][WebHome]]__ Nun fragt ihr euch, warum schreibt er nicht nen Regex für die beiden Fälle, oder, noch besser, das ganze gelöst mit einem Hash, hab ich nun auch, aber vielleicht gibt es in Perl eine Lösung dies noch kürzer zu machen. Der Workaround: Code (perl): (dl
)
1 2 3 4 $varHash{WEB} = &TWiki::Func::getPreferencesValue( "WEB" ); $varHash{TOPIC} = &TWiki::Func::getPreferencesValue( "TOPIC" ); ... $output =~ s/\$(\w+)/$varHash{$1}/mg; |