Thread Mit RegEx vergleich durchführen (12 answers)
Opened by Tom at 2004-07-14 20:26

betterworld
 2004-07-16 00:44
#84327 #84327
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Du musst bei so etwas verdammt aufpassen, wenn Du es in CGI-Skripten benutzt. Denn wenn ein eingebetteter RE einen Syntaxfehler beinhaltet, kann damit das Programm abgebrochen werden:
Code: (dl )
1
2
$ perl -e 'my $re = "(broken"; "hallo" =~ /$re/;'
Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE broken/ at -e line 1.

Ich nehme mal an, dass $name etwas ist, was vom User eingegeben wird. So etwas sollte nie in einem Regulaeren Ausdruck auftauchen (es sei denn, hinter \Q, siehe perldoc perlre).

Als "sichere" Loesung fuer Dein Problem wuerde ich vorschlagen:
Code: (dl )
1
2
3
4
5
my $begin = $name =~ s/^\*// ? qr// : qr/^/;
my $end = $name =~ s/\*$// ? qr // : qr/$/;
if ($string =~ /$begin\Q$name\E$end/) {
...
}

View full thread Mit RegEx vergleich durchführen