"Дмитрий Леонов. Использование Perl в интернет-технологиях" - читать интересную книгу автора

со строкой, а одна из последующих частей - нет, механизм поиска
возвращается к началу и пытается найти новое совпадение.
Если части шаблона заключены в круглые скобки, то включается механизм
запоминания, и части строки, которые им соответствуют, будут последовательно
присваиваться переменным $1, $2, $3 и т.п.:
$s = 'abbbbb';
$s =~ s/a(.*)b/c/; # в $1 будет находиться строка "bbbb"

Другой способ запоминания части строки - использование кодов \1, \2 и
т.п. непосредственно в шаблоне:
$s = 'abbbbb';
$s =~ s/a(.*)b/\1c/; # результирующая строка содержит "bbbbc"

Возможно использование одного из нескольких шаблонов:
/текст1|текст2|текст3/
а также их комбинация с помощью скобок:
/(a|b)c/;
Чтобы не включать здесь режим запоминания, используют запись
/(?:a|b)c/;

Образец может быть зафиксирован относительно позиции в строке: /^a.*b$/
соответствует строке, начинающейся с a и заканчивающейся b, а директива \b
требует, чтобы совпадение с образцом происходила только на границе слова.
Если в образце участвует переменная, то перед сопоставлением происходит
ее интерполяция, таким образом, можно строить регулярное выражение на
основании строки введенной пользователем. Чуть позже в этой главе будет
показана опасность этого подхода, пока же отметим, что для отмены
интерполяции используется управляющая последовательность \Q...\E,
предваряющая все спецсимволы в строке обратной косой чертой и превращающая
их тем самым в простые символы:
/\Q$var\E/

Директива tr позволяет заменить все вхождения символов из списка в
строке на другие:
$s =~ tr/abcde/ABCDE/;
Параметр /e заставляет рассматривать заменяющую строку директивы s как
Perl-выражение:
$s =~ s/(.)/sprintf("[%s]", $1)/eg;
(бесполезный пример, расставляющий квадратные скобки вокруг каждого
символа строки и демонстрирующий работу функции форматного вывода в строку
sprintf).
Регулярные выражения очень удобно использовать для разбивки строки на
составляющие - например, значение, хранящееся в DBM-файле, удобно разбить
на поля, сымитировав более сложную таблицу. Для этого в Perl существует
функция split. Первый ее параметр - регулярное выражение, рассматривающееся
как разделитель строки, идущей вторым параметром. Все элементы строки, не
совпадающие с регулярным выражением, последовательно помещаются в массив,
возвращаемый функцией split:

$s = 'abc:def:ghi';