Matti Maekitalo: suche/ersetzen per regulären befehl und wildcards ?

Beitrag lesen

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.