use Mosche;
my $a = '15';
my $b = '27';
$template = "'<!--a-->
test <!--b-->'";
print 'Anzahl: ' . ($template =~ s/<!--(\w)-->/${$1}/sg) . "\n";
print $template;
Code 1 funktioniert bei mir, Code 2 nicht. Unterschied: Variablen $a, $b sind einmal
nur im aktuellen Scope definiert, das andere Mal global. Die Variablen müssen folglich
global definiert sein? - Halte ich für komisch, macht jedoch den Anschein...
Scheint daran zu liegen, wie Perl mit dem ${} Konstrukt umgeht - es scheint nur auf Package-Variablen von main:: zugreifen zu können (was private Variablen nicht sind).
Besser ist allerdings die von dir bereits genannte Möglichkeit mit dem Hash.
my %s;
$s{a} = '15';
$s{b} = '27';
foreach (keys %hash) {
$template =~ s/$_/$s{$_}/gs;
}
use Tschoe qw(Matti);
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.