[Vienna-pm] Re: [Vienna-pm] Muster Überprüfen

Marcel Grünauer marcel at noug.at
Tue Mar 25 03:49:51 CST 2003


Hi,

> Ich habe einen Text, in dem bestimmte Muster durch ein anderes Muster
> ersetzt werden müssen. Die möglichen Muster habe auf einem Skalar
> abgespeichert:

Ich würde mit Hilfe der hash keys eine Regex aufbauen und sie
mit \b verankern, damit nicht Teilworte ersetzt werden (also
"blau" schon, aber nicht "blaues"):


my %replace = (
     gelb  => 'rot',
     gruen => 'lila',
     blau  => 'schwarz');

local $" = '|';
my @orig = join '|' => keys %replace;

while (<DATA>) {
     s/\b(@orig)\b/$replace{$1}/g;
     print;
}

__DATA__
der wald ist gruen, ein blaues wunder
Gelb ist die Sonne, nicht blau.


Ein anderer, recht interessanter, Ansatz ist


while (<DATA>) {
     s/ gelb  (?{'rot'})
      | gruen (?{'lila'})
      | blau  (?{'schwarz'})
      /$^R/gx;
     print;
}

__DATA__
der wald ist gruen, ein blaues wunder
Gelb ist die Sonne, nicht blau.


Mehr explizit, da die zusammengehörigen Teile auch nahe
beieinander stehen. Siehe 'perldoc perlre' für Details.

Marcel




More information about the Vienna-pm mailing list