Warum wird der Punkt übersehen?
Norbert
- perl
Hi,
ich hab einen Mailfilter vorgeschaltet, der z.B. alle Emails aus Rußland (Endung .ru), aber auch z.B. alle, in deren Absender "newsletter" oder "usa.com", "email.ee" usw. vorkommt, löscht.
Leider löscht er derzeit auch z.B. alles mit "Forum" im Absender, weil er das "ru" (ohne Punkt!!) als in Forum enthalten sieht.
Meine Schleife, die in @main alle Begriffe enthält (aus einer Textdatei mit je einem Begriff je Zeile) sieht so aus:
foreach (@main) {
if($from =~ /$_/i) {
$pop3->delete($msgno);
}
}
wie kann ich es erreichen, daß der Punkt (vor ru) erkannt wird?
Grüße
Norbert
Hallo Norbert,
wie kann ich es erreichen, daß der Punkt (vor ru) erkannt wird?
Der Punkt in einem regulären Ausdruck bedeutet, dass an dieser Stelle ein beliebiges anderes Zeichen stehen kann. Wenn also dein Suchmuster /.ru/ lautet, bedeutet es, dass vor dem "ru" ein beliebiges Zeichen kommen darf. Wenn du willst, dass der Punkt als Punkt interpretiert wird, musst du ihn afaik mit einem "" maskieren, das würde dann imho so aussehen müssen (ungetestet) /.ru/.
mfg Torsten
Hi,
wie kann ich es erreichen, daß der Punkt (vor ru) erkannt wird?
In dem du ihn escapest. Das heißt, du machst ihn von einem Operator zu einem normalen Zeichen (bsp:"."). Oder aber du könntest nur nach dem Ende des Suchstrings suchen (mit =~ m/suchstring$/). Das Dollarzeichen gibt an, dass hier das Ende sein muss.
Grüße Andres Freund
dDanke, kloappt auch mit dem @
Norbert