in reply to Defined or Undefined - That is the question.

 @items will never be false. (At least, if I am interpreting what "Effective Perl Programming" said.) Scalars can have the value undef or 0 or "" (false); however, an array reference will never return false... I think.

Jeremy

Replies are listed 'Best First'.
Re: Re: Defined or Undefined - That is the question.
by michael (Sexton) on Mar 13, 2001 at 21:51 UTC
    Since an array returns its length in scalar context--which is the context that unless places the array in--an array of length 0 will return 0, or false. From reading Programming Perl, I thought that unless didn't permit a branching conditional. Can someone clarify this for a Perl newbie?
      On the top of page 23 in my Camel 2, it reads

      There is no "elsunless" though. This is generally construed as a feature.
      I believe the authors meant that there is no keyword that means "elsif (not EXPR)" in the way that "unless (EXPR)" means "if (not EXPR)." You can, however, use elsif and else with unless:
      foreach $a ( 0,1,2 ) { unless ( $a ) { print "a is 0 or undef\n"; } elsif ( $a == 1 ) { print "a is 1\n"; } else { print "a equals $a\n"; } } __END__ a is 0 or undef a is 1 a equals 2
      I hope this clears things up for you.

      --sacked

        Ah, yes. That does clear it up. (That's p. 31 on the 3d edition of the Camel.) Unfortunately, the Camel doesn't show that usage in the proximity.

        Thanks.

      A reply falls below the community's threshold of quality. You may see it by logging in.