Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^5: Dumb, non-question: How to return 'nothing'.

by Anonymous Monk
on Jun 18, 2011 at 06:04 UTC ( #910301=note: print w/ replies, xml ) Need Help??


in reply to Re^4: Dumb, non-question: How to return 'nothing'.
in thread Dumb, non-question: How to return 'nothing'.

No it can't be shortened, that is the semi-predicate problem all over again :) see Dumb, non-question: How to return 'nothing'.


Comment on Re^5: Dumb, non-question: How to return 'nothing'.
Re^6: Dumb, non-question: How to return 'nothing'.
by ikegami (Pope) on Jun 18, 2011 at 06:20 UTC

    No, the loop won't exit even if [ undef ] or [ 0 ] is returned. List assignment in scalar context returns the number of elements to which its RHS evaluates, meaning the number of elements in the array.

    You'd be right that

    while( my $next = $iter->() ) { my @next = @$next; ... }

    is not equivalent to

    while( my @next = @{ $iter->() } ) { ... }

    But that's not the situation here.

    The point was that

    while( my $next = $iter->() ) { ($next) = @$next; ... }

    is a complicated version of

    while( my $next = @{ $iter->() } ) { ... }

    which is just an expensive version of

    while( my ($next) = $iter->() ) { ... }
      The point was that while( my $next = $iter->() ) { ($next) = @$next; ... } is a complicated version of while( my $next = @{ $iter->() } ) { ... }

      Not so. In the latter case when the iterator returns undef to terminate iteration, you will attempt to dereference that undef causing an error.

      In the former, the loop terminates and the dereference is never reached.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        you will attempt to dereference that undef causing an error.

        ug, tired. Will strike that bit.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://910301]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2014-04-19 11:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (480 votes), past polls