Just in case others Super Search for an answer to this question and follow merlyns node mentioned first in the result-set, here is the relevant excerpt of the perlfaq6
Found in /usr/lib/perl5/5.8.0/pod/perlfaq6.pod What's wrong with using grep or map in a void context?
The problem is that both grep and map build a
return list, regardless of the context. This
means you're making Perl go to the trouble of
building a list that you then just throw away. If
the list is large, you waste both time and space.
If your intent is to iterate over the list then
use a for loop for this purpose.
If you have a difficult task, give it to a lazy person --
they will find an easier way to do it.