in reply to Map not working as expected.

I second chromatic's advice. But for the sake of completeness, here's one using List::MoreUtils::none():
@yum = map { my $yum = $_; (none { /$yum/ } @bad) ? $yum : () } @yum;
It's a bit cryptic, but it does its job.