in reply to Badwords Routine

You might find the CPAN modules Regexp::Common and Regex::Common::Profanity useful, especially if your target language is English or Austrian/German. Some of these modules even cope with spelling v^r1a+10n2.
Maybe using or analysing these modules helps to ease the pain of collecting and maintaining a dictionary of bad words in the first place?