http://www.perlmonks.org?node_id=1067467


in reply to Smartmatch alternatives

TIMTOWTDI.

I often use the grep solution $contained = grep { $_ eq $searched } @array; or even grep /^\Q$searched$/,  @array

If you are going to search for several values in the same @array, a hash may be a good idea (and unless order is important, or the same value can appear more than once, you could just use a hash all the way):

my %hash = map { $_ => 1 } @array; for $search (@listOfScalars) { say '@array contains '.$_ if exists $hash{$_}; }

Or there's also the first_index function from List::AllUtils. Which is similar to the grep solution, except it stops at the first match.