Graham Barr <[EMAIL PROTECTED]> writes:

> On Fri, May 18, 2001 at 08:31:21AM -0500, Jarkko Hietaniemi wrote:
> > On Fri, May 18, 2001 at 06:22:10AM -0700, Austin Hastings wrote:
> > > 
> > > --- Damian Conway <[EMAIL PROTECTED]> wrote:
> > >  
> > > > It's probably just a matter of coding what you actually mean. 
> > > > In Perl 5 and 6 your version means "if $fh is true in *any* 
> > > > possible way...", whereas you seem to want "if $fh is defined",
> > > > which is:
> > > 
> > > Hmm. I can easily see this producing incomprehensible code when spread
> > > across large systems. To wit, those developers used to "0 means false"
> > 
> > Any feature is incomprehensible if one is not used to it.  Pointers
> > in C are incomprehensible if one has never met the concept before.
> 
> Right, consider overloading.
> 
> > As far as I understand one rationale behind the "false (in Perl 5 terms)
> > but true (in Perl 6 terms)" is that you can write code like this
> > 
> >     if ($retval = func(@args)) {
> >             # it worked ...
> 
> Right. Which of course can be done in Perl 5 with either "0 but
> true" (or "0E0") or if the value is an object, the use of
> overloading.

But what you can't do with 0E0 is the else branch of that example,
accessing C<$retval.what_went_wrong>, which would be really handy...

-- 
Piers Cawley
www.iterative-software.com

Reply via email to