Hi,
z.B. scheinen die ersten 3 Filterwörter tatsächlich zu klappern, nur das Ebay Wort scheint nicht zu laufen.
Du hast Dir natürlich die Werte, die Du da auf Deine Suchwörter hin überprüfst, mal ausgeben lassen. Wie lauten sie?
Liegt das daran das das Wort ebay in der $env eingebunden ist ?
Welches $env? Erstens ist es ein Hash, also %env, zweitens heißt es %ENV. Groß- und Kleinschreibung ist im Universum von entscheidender Bedeutung.
my(@filter)
Warum forcierst Du hier den Listenkontext? Die Klammern sind nicht nötig. In der nächsten Zeile noch weniger, Du hast nicht mal eine Liste.
= ('robots.txt','favicon.ico','undefined','ebay');
Danke für die Singlequotes!
my($filter) = join('|',@filter);
Es ist nicht wirklich sinnvoll, mehrere gleichnamige Variablen im selben Scope zu halten. Wenn Du $filter verwenden möchtest, nenne das Array z.B. @filterliste.
if(!($ENV{'REFERER_URL'} =~ /($filter)/) && !($ENV{'HTTP_REFERER'} =~ /($filter)/)) {
Dir ist bewusst, dass
- "!(a =~ b)" identisch ist zu "a !~ b",
- der Referer absolut kein Pflichtfeld ist und daher leer oder mit (für Dich) sinnfreien Werten gefüllt sein kann,
- die Klammern innerhalb der Regular Expression zumindest bisher nicht nötig sind (vielleicht werden sie es später, das weiß ich nicht), und
- Du hier case-sensitive abfragst, also wieder einmal "Ebay" != "ebay" ist?
Zu den Details in Regular Expressions siehe
perldoc perlre
Cheatah