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


in reply to Problem wrapping prototyped function [SOLVED]

You could also possibly use the solution I outlined here: Re^5: Smartmatch alternatives.

Replies are listed 'Best First'.
Re^2: Problem wrapping prototyped function [SOLVED]
by LanX (Saint) on Dec 17, 2013 at 22:30 UTC
    I'm afraid you missed the point.

    The reason why people want to use any instead of grep is to break as soon as the condition is true.

    Example: Test array for odd numbers:

    DB<47> use List::MoreUtils qw/any/ DB<48> @x=1..10000;() DB<49> $i=0; $flag= any { $i++; $_ %2 } @x; ($i,$flag) => (1, 1) DB<50> $i=0; $flag= grep { $i++; $_ %2 } @x; ($i,$flag) => (10000, 5000)

    Looks like you reimplemented grep, just slower.

    Cheers Rolf

    ( addicted to the Perl Programming Language)

      Well, part of the discussion in the other post was about the fact that using grep in a Boolean context for simulating an any function is not very clear.

      The other point, which I should have mentioned and you could not guess it, is that I am not really using the List::Util version of reduce, but my own experimental lazy version of reduce, so that the process stops as soon as it has satisfied the relevant condition. (It should probably called something else than reduce, but OK, that's the idea.)