http://www.perlmonks.org?node_id=177991


in reply to How do I write subs that take bare blocks as args?

Couldn't this be done with a grep?

if (grep {$_->price <= 1000} @product_list) { # do stuff }

--

flounder

Replies are listed 'Best First'.
Re: Re: How do I write subs that take bare blocks as args?
by DamnDirtyApe (Curate) on Jun 28, 2002 at 14:49 UTC

    Hey, good idea! Except, to work the same as my example, it needs to be:

    if ( ( grep { $_->price <= 1000 } @product_list ) == @product_list ) { # do stuff }

    _______________
    D a m n D i r t y A p e
    Home Node | Email
      Why so complicated? :)
      if(not grep { $_->price > 1000 } @product_list) { # do stuff }
      Update:
      my @p = (0,2,4,5,2,5,7,7); print "1: none\n" if not grep { $_ > 1000 } @p; push @p, 1002; print "2: none\n" if not grep { $_ > 1000 } @p; =output 1: none
      ____________
      Makeshifts last the longest.
      A reply falls below the community's threshold of quality. You may see it by logging in.
      You are right. In my example the { #do stuff } block will get executed if any of the members of @product_list pass the conditions. You want to know if all members pass.

      IIRC won't perl6 have some kind of any and all builtins?

      --

      flounder

        It will. But Quantum::Superpositions will give them to you now. (Warning: This module is superfreaky.)


        We are using here a powerful strategy of synthesis: wishful thinking. -- The Wizard Book