in reply to lsearch for perl?
Sure, grep will simplify that, with a minor change in behavior - maybe for the better.
That will return the empty list for false, and otherwise a list of each index that succeedssub lsearch { my $item = shift; grep { $item eq $_[$_] } 0 .. $#_; }
Usage becomes, for your example,
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.for (reverse lsearch $item, @list) { splice @list, $_, 1 } # or splice @list, $_, 1 for reverse lsearch $item, @list;
An alternative is to define a winnow() function to do it all:
That is maybe less flexible, but I think cleaner.sub winnow { my $item = shift; grep { not $item eq $_ } @_; } @list = winnow $item, @list;
After Compline,
Zaxo
|
|---|