Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: Re: findone { coderef } @array

by shotgunefx (Parson)
on Feb 26, 2002 at 07:19 UTC ( #147498=note: print w/ replies, xml ) Need Help??

in reply to Re: findone { coderef } @array
in thread findone { coderef } @array

Thanks for the feedback. I left out the my and the use (warnings && strict) while pasting. My bad.
The reason I have the wantarray is because I wanted to be able to ignore the index with out forcing list context.

my ($match,$index) = findone { $_ > 100 } @nums ; my $matchonly = findone { $_ > 100 } @nums ;
Your right about the local $_ (Lava flow from first try). I lost it all together as $_ is localized by for anyway.
Could you elaborate on what you had in mind for an end hook?

What I think is interesting about this (for me anyway) is being able to retain state without resorting to objects. Using an %args hash for a function and this technique, it should be pretty easy to write iterator functions without OO. Nothing wrong with objects but for something like this, the grep syntax feels more natural and looks better to me.
I don't know if there is anything on CPAN for this. The closest I found was first() in List::Util
It was mainly an "I should be able to do that.." exercise.


"To be civilized is to deny one's nature."

Comment on Re: Re: findone { coderef } @array
Download Code
Replies are listed 'Best First'.
Re^3: findone { coderef } @array
by jynx (Priest) on Feb 26, 2002 at 18:16 UTC

    For the wantarray, i see the usefulness, but i was commenting on moving the return outside of the ?:. It's not really a big deal, but it would look something like:
    return wantarray ? ($_,'blah') : $_;
    For the end hook, you have a start index, you can receive an extra scalar as the end index, and only pick it up if they've put in a start index as well. Prototype would be kinda like:

    findone { code } @list
    findone { code } @list, $start_index
    findone { code } @list, $start_index, $end_index

    So if they know they don't need to walk further than a certain place on the array they can be certain to stop there.


      Good point. I added the end_index.


      "To be civilized is to deny one's nature."

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2015-11-26 15:34 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (701 votes), past polls