Как мне сопоставить строки в стиле оболочки, используя Perl? - PullRequest
1 голос
/ 03 июня 2010

Как сопоставить строки в стиле оболочки в Perl? Например:

foo*
{bar,baz}.smth
joe?
foobar[0-9]

Ответы [ 2 ]

5 голосов
/ 03 июня 2010

Использование регулярных выражений

Ваши примеры будут:

/foo.*(bar|baz)\.smth joe/

/foobar\d/

Однако, если вы на самом деле хотели иметь оболочку расширение имени файла (например, выше было в контексте ls foobar[0-9]), используйте функцию glob():

my @files = glob("foo* {bar,baz}.smth joe");

my @foobar_files = glob("foobar[0-9]");

Обратите внимание, что синтаксис регулярных выражений в Perl НЕ синтаксис языка расширения имени файла

0 голосов
/ 10 июня 2010

File::FnMatch представляет реализацию fnmatch(3) вашей системы, которая, вероятно, и реализует шаблоны подстановочных знаков оболочки для вас.

(Обратите внимание, что {bar,baz}.smth не соответствует само по себе , это просто "расширение скобок" строк.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...