Обратите внимание что первый елемент $1.
Пример:
$a = «/usr/local/perl/perl.bin»; # Анализируемая строка
Цель: Создать массив @dirs с именами директорий.
Решение:
Самый простой способ воспользоваться split('\/')
, но в качестве примера используем скобки.@dirs =~ m[/(\w*)/(\w*)/(\w*)/(\w*)]
Здесь 'm[
' – использовать квадратные скобки как ограничители.(\w*
) – шаблон алфавитноцифровой последовательности.В результате @dirs
равен ('usr', 'local', 'perl')Строка литералов. Не интерполируется. Внутри строки разрешается использовать \'
или \\ для обозначения символов ' и \ .Пример:
print q#Привет.#; # Результат Привет.
print 'O\'K'; # O'K
Интерполируемая строка.
Пример:
$var = 13;
print «\$var = $var»;
Результат:
$var = 13
Сначала строка интерполируется а потом выполняется как системная команда.
Пример:
print `date`;
Результат:
Thu Nov 14 13:36:49 MSK 1996
Возвращает список элементы которого – слова строки разделенные пробелами.
Пример:
print qw/Построемся и спасемся!/; # ('Построемся','и','спасемся!')
Результат:
Часто применяется как:
use POSIX qw( setlocale localeconv )
@EXPORT = qw( proc1 var );
Поиск по шаблону и в случае успеха замена подстрокой.
Возвращает количество произведенных подстановок иначе false (0). Если строка в которой ведестя поиск не указана (операторы =~ или != ) то используется переменная $_ .
Если в качестве раделителя '/' исрользовать одинарную кавычку (') то интерполяции не будет иначе можно применять переменные в шаблоне или подстроке.
Опции:
e
– Расмматривать правую часть как выражение.g
– Глобальный поиск.i
– Без различия регистра буквm
– многосточная переменнаяo
– компилировать шаблон один разs
– однострочная переменнаяx
– расширенное регулярное выражениеРазделитель '/
' можно заменить на любой алфавитно-цифровой символ кроме пробела.Пример:
$var = «12345»; # исходная строка
$var =~ s/1/0/; # Заменить '1' на '0'. Результат 02345
$var =~ s(5)(.); # Заменить '5' на '.' Результат 0234.
Здесь в качестве разделителя применены скобки поэтому подстрока
взята в две скобки.
$var =~ s/\d*/каламбур/; Заменить все цифры. Результат 'каламбур.'
$var =~ s/а/о/g; # Заменить все 'а' на 'о'. Результат 'коломбур.'
$var = «12 34»; # Новое значение
$var =~ s/(\d\d) (\d\d)/$2 $1/; # Поменять местами числа. Результат '34 12'.
tr/таблица1/таблица2/cds
y/таблица1/таблица2/cds
Замена всех символов из «таблица1» на соответсвующий символ из «таблица2». Результат – количество замен или стираний. Без оператора =~
или != операция выполняется с строкой $_. Для совместимости с программой sed вместо tr можно писать 'y'.Опции:
c
– дополнение «таблица1»d
– стереть найденные но не замененные символы.s
– «зжать» повторяющиеся замененные символы.Если указана опция /d
Другими словами если
Пример:
$s = «hello»; # Исходная строка
$s =~ tr/a-z/A-Z/; # Заменить малые буквы на большие. Результат
# 'HELLO'
$s = 'Hel....lo';
$s =~ tr/a-zA-z/_/c; # Заменить все не буквы на '_'
# Результат 'Hel____lo'
$s =~ tr/_/ /s; # Заменить '_' на ' ' и сжать.
# Результат 'Hel lo'
$s =~ tr/a-zA-Z /a-zA-Z/d; # Удалить все не буквы. Результат 'Hello'
Если один и тот же символ несколько раз указан в таблице1 то применяется только первая замена.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT