The CGI.pm-style shortcut that some have mentioned is nice, and if you find it appropriate for your code that's fine. But do be aware of the consequences. Without realizing what
$cgi->param() was really doing, I once wrote something like this:
%hash = (
foo => $cgi->param('foo'),
bar => $cgi->param('bar'),
...
);
Now, what happens when the 'foo' CGI param isn't passed? The above param() calls are in list context, so the
param('foo') call returns an
empty list, not an undef scalar value. Therefore
$hash{foo} is set to 'bar', and any key/value pairs after that are shifted as well.
wantarray is a neat tool, but you must keep your wits about you when it's afoot. :)