But proverbs are allowed to be contradictory. The point of the 'foreach not grep' proverb is that you should use try and use the most appropriate of the ways to do a thing. And Mark further points out that List::Util (there would be a search.cpan.org link here, but some bugger just hacked the site) has some neat, clear, tools for 'hiding' the foreach behind a clearer abstraction. Which is nice.
He also suggests another proverb for the list.
Good is good, but done is better
Which is another way of saying 'The Best is the enemy of the good', or 'Worse is better', or... But it's a good new way of saying it.