Как искать строку в массиве, используя grep? - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть массив, который содержит некоторые имена файлов. Я пытаюсь найти конкретное имя файла, соответствующее строке.

@arr=qw(INS.INPUT01.S7779902 INS.INPUT01.S7779903 INS.INPUT01.S7779904);
$str = "7779902";

if (grep{$_=~ /$str/} @arr){
    print $_;
}

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы, вероятно, хотите, чтобы имя файла в списке соответствовало?

Это выглядит так

my ($match) = grep /\Q$str/, @arr

print $match, "\n" if defined $match

Это покажет первое соответствующее имя. Любые другие будут игнорироваться

0 голосов
/ 28 апреля 2018

Если вы хотите узнать, какие элементы совпали, вам нужно что-то сделать с возвращаемым значением grep:

my @matched = grep { /$str/ } @arr;
for my $x (@matched) {
    print $x, "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...