У меня есть массив, который содержит некоторые имена файлов. Я пытаюсь найти конкретное имя файла, соответствующее строке.
@arr=qw(INS.INPUT01.S7779902 INS.INPUT01.S7779903 INS.INPUT01.S7779904); $str = "7779902"; if (grep{$_=~ /$str/} @arr){ print $_; }
Вы, вероятно, хотите, чтобы имя файла в списке соответствовало?
Это выглядит так
my ($match) = grep /\Q$str/, @arr print $match, "\n" if defined $match
Это покажет первое соответствующее имя. Любые другие будут игнорироваться
Если вы хотите узнать, какие элементы совпали, вам нужно что-то сделать с возвращаемым значением grep:
grep
my @matched = grep { /$str/ } @arr; for my $x (@matched) { print $x, "\n"; }