Empty Hash Values

Dave Cross dave at dave.org.uk
Tue Apr 14 22:02:53 BST 2009


Dave Hodgkinson wrote:
> 
> On 14 Apr 2009, at 18:16, Matt Lawrence wrote:
> 
>> Jasper wrote:
>>> Adrian and I had a tiny chat about this in work, and he decided that
>>> subs that return a scalar should return undef explicitly (if they are
>>> just returning), and those that return a list should return.
>>>
>>> At the time I thought it seemed very sensible, but I'm on the fence 
>>> again.
>>>
>>> Difficult to retroactively enforce, at any rate.
>>>
>> Most of the time just returning does what you expect, it's false in 
>> every context and undef in scalar context.
> 
> And fails PBP for exactly the confusion in previous mails. Plain
> return is Just Wrong. Be explicit.

PBP disagrees with you.

   9.12. Returning Failure

     Use a bare return to return failure.

   Notice that each final return statement in the examples of the
   previous guideline used a return keyword with no argument, rather
   than a more-explicit return undef.

   Normally, relying on default behaviour is not best practice. But in
   the case of a return statement, relying on the default return value
   actually prevents a particularly nasty bug.

   The problem with returning an explicit return undef is that—contrary
   to most people's expectations—a returned undef isn't always false.

Cheers,

Dave...


More information about the london.pm mailing list