in reply to using a string in a regexp

Bowdlerization, huh?
You can split each word into individual characters, rejoin them with \W*, and then convert each word into a regex, that you then use in your s///.
@badwords = map { my $regex = join '\W*', (split //, $_); qr/$regex/i; } @badwords; foreach (@badwords) { $string =~ s/$_/<expletive>/gc; }

-- Frag.
--
"Just remember what ol' Jack Burton does when the earth quakes, the poison arrows fall from the sky, and the pillars of Heaven shake. Yeah, Jack Burton just looks that big old storm right in the eye and says, "Give me your best shot. I can take it."