Как использовать регулярные выражения в файле ввода-вывода? - PullRequest
0 голосов
/ 25 апреля 2019

В Perl Я пытаюсь найти файл (строку), который находится в массиве (содержит имена файлов) внутри одного каталога.Но в этом каталоге находится файл вместе с некоторым номером.поэтому он не находит этот файл.

Имя файла в массиве выглядит так: template_to_do,
Точное имя в каталоге выглядит так: template_to_do.12345

Я использовал этот код:

$regr = path to directory if(-e "$regr/$_")

Это не таквыбирая этот файл.Я попробовал как reg exp, как показано ниже, но это также не сработало.

if(-e "m[$regr\/$_.\d*]")

1 Ответ

1 голос
/ 25 апреля 2019

-e ожидает имя файла, а не регулярное выражение. Вы не показали, что внутри $_, поэтому мы не можем комментировать, что не так с первой командой.

Вы можете использовать glob для расширения шаблона (переключитесь на File::Glob::bsd_glob, если $ regr может содержать пробел):

for (@array) {
    my @files = glob "$regr/$_.*";
    print "Found @files";
}

Вы можете использовать grep для фильтрации имен по регулярному выражению:

if (my @files = grep /\.[0-9]+$/, glob "$regr/$_.*") {
    print "Found @files.\n" if -e $files[0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...