Chris: $1 behält Wert zulange

Beitrag lesen

Hallihallo,

ich habe mehrere RegExp, die ich nacheinander auf verschiedene Strings anwende, um bestimmte Teile herauszuparsen. Nun kann es aber auch vorkommen, dass ein RegExp überhaupt nicht matcht und dann habe ich in $1 nicht etwa undef stehen, sondern das Ergebnis des vorigen RegExp. Wie kann man das umgehen?

Folgende Struktur habe ich:

  
$s1 =~ m/foo(.*?)foo/;  
$res1 = $1;  
  
$s2 =~ m/bar(.*?)bar/;  
$res2 = $1;  

Wenn nun $s2 nicht matcht, dann steht in $res2 das Ergebnis des ersten RegExp, obwohl '' oder undef viel besser wäre.

In perldoc perlre gibt es nur eine Notiz, dass das Verhalten von $[1..9] so gewollt ist und meistens auch praktisch ist. Nur hier ist es das nicht :)

Grüße
Chris