Первый аргумент, который вы передаете grep, должен оцениваться как true или false, чтобы указать, было ли совпадение.Таким образом, это должно быть:
# note that grep returns a list, so $matched needs to be in brackets to get the
# actual value, otherwise $matched will just contain the number of matches
if (my ($matched) = grep $_ eq $match, @array) {
print "found it: $matched\n";
}
Если вам нужно сопоставить множество различных значений, возможно, стоит подумать о том, чтобы поместить данные array
в hash
, поскольку хеши позволяютсделать это эффективно, без необходимости перебирать список.
# convert array to a hash with the array elements as the hash keys and the values are simply 1
my %hash = map {$_ => 1} @array;
# check if the hash contains $match
if (defined $hash{$match}) {
print "found it\n";
}