As to how Perl can be improved. I agree with tye, map
and grep should generate a warning in void context. I'd leave out
the foreach recommendation except under diagnostics.
In the same vein,
Perl should have a wantvoid or wantbool operator so that the
general case can be handled.