Name: Anonymous 2010-05-04 6:51
This is driving me insane! I've been trying to make a working spam filter for a long time but I still cannot accomplish this simple task!
BOARD_SPAM = spam.txt file. Inside this text file are two items:
test.1
test;2
So, whenever the comment contains any of those two lines anywhere, the script is supposed to abort with an error.
However, this does not happen!
What happens is this: If you have test.1 in the comment, it does NOT abort the script, as it should.
But if you have test;2 in the comment, it works perfectly and it aborts. It only seems to filter the LAST line of spam.txt
I do not understand why it does this.
my @SPAM; # Spam check
tie @SPAM, 'Tie::File', BOARD_SPAM, memory => 20000000, mode => O_RDONLY;
(tied @SPAM)->flock(LOCK_SH) if -e BOARD_SPAM;
for (@SPAM) {
/^(.*)$/;
Abort('Comment contains a blacklisted item') if $comment =~ /$1/gi;
}
untie @SPAM;BOARD_SPAM = spam.txt file. Inside this text file are two items:
test.1
test;2
So, whenever the comment contains any of those two lines anywhere, the script is supposed to abort with an error.
However, this does not happen!
What happens is this: If you have test.1 in the comment, it does NOT abort the script, as it should.
But if you have test;2 in the comment, it works perfectly and it aborts. It only seems to filter the LAST line of spam.txt
I do not understand why it does this.
for (@SPAM) means it should go through every single line, not just the last line, right?!