use List::Util "first";
sub has_element($$)
{
my( $aref, $value ) = @_;
first { $aref->[$_] eq $value } 0..$#$aref
}
?
-----Original Message-----
From: Rob Dixon [mailto:[EMAIL PROTECTED]
Sent: Monday, 16 February 2004 10:57 PM
To: [EMAIL PROTECTED]
Subject: Re: Looking up values in arrays?
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>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>