Thinking of it, I myself would probably use do {...} foreach @list; as you suggest, because I find it more readable. At first I found that particular use of grep intriguing. Then again, I wonder whether it was a good idea to add such a (potentially confusing) functionality to grep, since foreach works perfectly fine.