Paul Johnson wrote:
>
> > Is there a function to find out if a given value exists in an array?
> >
> > What I think of is something like &has_element([EMAIL PROTECTED], $value), which
> > should return either a boolean value or the index containing the value
> > (undef if $value is not found).
> > I'm sure something like this exists. Or do I need to write this myself?
>
> Something close exists.  I think I'd probably code it as:
>
> use List::Util "first";
>
> sub has_element
> {
>     my ($array, $value) = @_;
>     first { $_ eq $value } @$array
> }

Except that this will return the /value/ of the element
for which the block returns true, which isn't obvious from the
call. It's identical to

  sub has_element {

    my ($array, $value) = @_;

    foreach (@$array) {
      return $_ if $_ eq $value;
    }

    return;
  }

which, to my mind, is preferable as it is clearer what's going on. It's
certainly no slower.

Rob



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to