|
аналогично /шаблон/ но выполняется
до первого совпадения. Это удобно для поиска наличия какой
нибудь строки в одном или множестве файлов. Это не очень
удачный оператор поэтому в следующих версиях Пел его
возможно не будет.
m/PATERN/gimosx
/PATERN/gimosx
Поиск в строке по патерну (шаблону). В скалярном контексте возвращает
логическое значение true (1) или false (''). Если строка не указана
с помощью операторов '=~' или '!~' поиск ведется в строке $_
Опции:
g - Глобальный поиск. Поиск всех вхождений.
i - Сравнение не зависит от регистра (верхний или нижний)
m - Строка многострочна.
o - однопроходная компиляция
s - однострочная строка
x - используеются расширенные регулярные выражения.
Если '/' - ограничитель то начальное 'm' можно опустить. С помощью
него в качестве ограничителя может быть любой символ кроме пробела.
PATTERN может содержать переменные которые будут интерполироваться
(перекомпилироваться) каждый раз в момент вычисления.
Переменные $) и $| не интерполируются. Если вы хотите что бы
такой шаблон интерполировался один раз - добавьте /o.
Это необходимо делать в циклах поиска для увеличения быстродействия
однако если вы измените значение переменной Пел этого даже не заметит.
Если PATERN - нулевая строка то используется последнее регулярное
выражение.
В скалярном контексте возвращается список элементы которого
результаты выполнения выражений в скобках патерна ($1, $2, $3...).
Обратите внимание что первый елемент $1.
Пример:
$a = "/usr/local/perl/perl.bin"; # Анализируемая строка
Цель: Создать массив @dirs с именами директорий.
Решение:
Самый простой способ воспользоваться split('\/')
но в качестве примера используем скобки.
@dirs =~ m[/(\w*)/(\w*)/(\w*)/(\w*)]
Здесь 'm[' - использовать квадратные скобки как ограничители.
(\w*) - шаблон алфавитноцифровой последовательности.
В результате @dirs равен ('usr', 'local', 'perl')
q/строка/
'строка'
Строка литералов. Не интерполируется. Внутри строки разрешается использовать
\' или \\ для обозначения символов ' и \ .
Пример:
print q#Привет.#; # Результат Привет.
print 'O\'K'; # O'K
qq/строка/
"строка"
Интерполируемая строка.
Пример:
$var = 13;
print "\$var = $var";
Результат:
$var = 13
qx/строка/
`строка`
Сначало строка интерполируется а потом выполняется как
системная команда.
Пример:
print `date`;
Результат:
Thu Nov 14 13:36:49 MSK 1996
qw/строка/
Возвращает список элементы которого - слова строки разделенные
пробелами.
Пример:
print qw/Построемся и спасемся!/; # ('Построемся','и','спасемся!')
Результат:
Построемсяиспасемся!
Часто применяется как:
use POSIX qw( setlocale localeconv )
@EXPORT =
|
|