Re: Huh? 4=3?

Tim Bunce <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <[email protected]>
On Wed, May 08, 2013 at 10:58:02AM -0700, [email protected] wrote:
> On Wed, May 08, 2013 at 09:43:27AM -0700, Bill Ward wrote:
> > Cool. That whole scalar vs list context thing is one of Perl's biggest
> > strengths, but also one of its biggest weaknesses (in that it is a common
> > source of bugs like this). When you see head-scratching problems, it's one
> > of the first things to look for.
> 
> Just guessing here, not familiar with the particular code in question.
> But I have been bitten a few times by code which returns false in the
> 'proper' manner
> 
>     return;
> 
> instead of forcing a scalar return
> 
>     return undef;
> 
> or list return
> 
>     return ();

There is no difference between "return;" and "return ();".
Both return an empty list when called in list context
and an undef when called in scalar context.

The "return ();" style does serve as a reminder to the reader.

> Is that what's going on here -- the original code imparted a list
> context, which triggered another perl gotcha, whereby missing list
> values simply disappear:
> 
>     scalar(1,2,,4,,6) ---> 4, not 6

That returns 6, or rather, it returns whatever happens to be the last value.

Tim.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.