/ / Як мені зіставити рядки у стилі оболонки за допомогою Perl? - perl

Як я можу зіставити рядки в оболонці за допомогою Perl? - perl

Як зіставити рядки у стилі оболонки в Perl? Наприклад:

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

Відповіді:

5 за відповідь № 1

Використовуючи регулярні вирази

Ваші приклади:

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

/foobard/

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

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

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

Зверніть увагу, що синтаксис регулярних виразів у Perl є НЕ мова розширення імені файлу


0 для відповіді № 2

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

(Зауважте, що {bar,baz}.smth не відповідає як такий, це просто "фігурне розширення" рядків.)