in reply to Unhappy returns

It is worth noting, however, that, contrary to map, grep evaluates its second argument in scalar context

And that is perfectly expected, because while map accumulates a list from successive evaluations of the expression, grep evaluates the expression as a boolean – which always implies scalar context.

Makeshifts last the longest.