выражение.

В скалярном контексте возвращается список элементы которого результаты выполнения выражений в скобках патерна ($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 = qw( proc1 var );

s/шаблон/подстрока/egimosx

Поиск по шаблону и в случае успеха замена подстрокой.

Возвращает количество произведенных подстановок иначе 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/(dd) (dd)/$2 $1/; # Поменять местами числа. Результат '34 12'.

tr/таблица1/таблица2/cds

y/таблица1/таблица2/cds

Замена всех символов из «таблица1» на соответсвующий символ из «таблица2». Результат – количество замен или стираний. Без оператора =~ или != операция выполняется с строкой $_. Для совместимости с программой sed вместо tr можно писать 'y'.

Опции:

c – дополнение «таблица1»

d – стереть найденные но не замененные символы.

s – «зжать» повторяющиеся замененные символы.

Если указана опция /dтаблица2 всегда интерпретируется как положено.

Другими словами если таблица2 короче чем таблица1 то символ из таблицы1 интерпретируется всегда. Если таблица2 – null то все символы строки остаются не изменненные. Это удобно для подсчета количества сиволов в строке определенного класса или для сжатия повторяющихся символов например пробелов.

Пример:

$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 то применяется только первая замена.

Операторы ввода-вывода.

В Перл существует несколько операторов ввода-вывода. Первый это скобки из символа '`' – акцента. Строка в этих скобках воспринимается как системная команда и результат ее действия возвращается как «псевдо» литерал. В

Вы читаете Введение в Perl
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату