I did test the CPAN profanity modules so as not to re-invent the wheel, but the results for the data I was testing against threw a lot of false positives. I figured it may be trying to do too much so I went with my own design.
Funny about your posting and obviously that's a problem with these sort of things. My module will only return true/false, so it's up to the calling program to decide what to do. I've tested with a LOT of real thread postings and have slimmed the dictionary down so that it's lenient. Testing for 'beat' as a vulgar term is ridiculous, IMHO.