Reinim: RegEx mit dynamischen Daten

Beitrag lesen

Hallo!

Ich habe eine Liste, die immer 2 Einträge pro Listenelement hat:

@Liste1 = ("Code1,Name1 (Zusatz1)","Code2,Name2 (Zusatz2)");

Nun möchte ich zu einem Namen inkl. Zusatz anhand der Liste den zugehörigen Code suchen, also eine Suche mit $Name="Name2 (Zusatz2)" soll $Code="Code2" liefern.
Ich dachte mir nun, dies mit einer Schleife und einer RegEx-Abfrage zu lösen:

$Name = "Name2 (Zusatz2)";
foreach (@Liste1) {
   if ( $_ =~ /(.+),$Name/) {
      $Code = $1;
   }
}

Das Problem hier sind die Klammern in "Name2 (Zusatz2)": Diese werden, dynamisch in die RegEx eingesetzt, leider nicht als Zeichen Klammer verwendet, sonder mit der RegEx-Sonderbedeutung für die Gruppierung von Teilausdrücken.

Dies ist hier völlig unerwünscht. $Name wird selbst dynamisch erzeugt , und ich möchte nicht alle Zeichen mit RegEx Sonderbedeutung erst vorher maskieren müßen (hier etwa \( und \).

Gibts da Alternativen, bzw. überhaupt eine andere Lösung für derartigen Suchen in Listen?