Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: lsearch for perl?

by Zaxo (Archbishop)
on Dec 05, 2005 at 15:46 UTC ( [id://514159]=note: print w/replies, xml ) Need Help??


in reply to lsearch for perl?

Sure, grep will simplify that, with a minor change in behavior - maybe for the better.

sub lsearch { my $item = shift; grep { $item eq $_[$_] } 0 .. $#_; }
That will return the empty list for false, and otherwise a list of each index that succeeds

Usage becomes, for your example,

for (reverse lsearch $item, @list) { splice @list, $_, 1 } # or splice @list, $_, 1 for reverse lsearch $item, @list;
so all instances of $item are removed from the array. The reverse call is needed to preserve the indexes from being shifted out of sync by splice.

An alternative is to define a winnow() function to do it all:

sub winnow { my $item = shift; grep { not $item eq $_ } @_; } @list = winnow $item, @list;
That is maybe less flexible, but I think cleaner.

After Compline,
Zaxo

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (2)
As of 2024-04-19 20:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found