|
Добро пожаловать на наш сайт! |
Сайт посвящен компьютерам, софту, программированию и вообще информационным технологиям.
Надеямся Вам у нас понравится. |
|
|
|
|
|
|
|
|
|
|
Введение в Perl |
Это выполняется вторым проходом после интерполяции переменных поэтому в шаблоны можно вставлять переменные. Для отмены интерполяции используйте '
\Q'. Если вы применяете вложенные ограничители то внутренние ограничители работать не будут.
?PATERN? ?PATERN? Действие этого оператора аналогично /шаблон/ но выполняется до первого совпадения. Это удобно для поиска наличия какой нибудь строки в одном или множестве файлов. Это не очень удачный оператор поэтому в следующих версиях Перл его возможно не будет. 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/строка/ 'строка' Строка литералов.
|
|
|