grep
возвращает список. Когда вы помещаете имя скалярной переменной в круглые скобки, Perl обрабатывает все это значение l как список, поэтому присваивает этой переменной первое значение в списке.
Если у вас есть другие скаляры в скобках, вы получите второе, третье и т. Д. Значения из возвращаемого массива grep
:
my ($index, $foo, $bar) = grep { $array[$_] eq $search_for } 0..$#array;