Читаем Введение в Perl полностью

Этот оператор работает так же как и в С. Если выражение перед '?' истинно то выполняется аргумент перед ':' – иначе после ':'.

Пример:

$i = 1;

$i > 1 ? print «больше» : print «меньше»;

Результат: меньше

Операторы присваивания.

'=' – обычный оператор «присвоить» правое значение переменной слева Вся эта группа операторов подобна операторам С т.е.

$i += 2;

эквивалентно

$i = $i + 2;

Остальные операторы этой группы работают аналогично.

Допустимы следующие операторы:

**=

+= -= .=

*= /= %= x=

&= |= ^=

<<= >>=

&&= ||=

Приоритет всей этой группы операторов равен приоритету '='.

Оператор ',' (запятая)

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

В списковом контексте это разделитель элементов списка который включает указанные элементы в список.

Оператор логическое not (орицание).

Унарный not возвращает противоположное значение полученное выражением справа. Он эквивалентен '!' но имеет очень низкий приоритет.

Оператор логическое and (И).

Выполняет логическую конъюнкцию двух выражений. Эквивалентен '&&' но имеет очень низкий приоритет и «краткость» действия. т.е если левое выражение равно false – левое не выполняется.

Логическое or (ИЛИ).

Выполняет логическую дизъюнкцию двух выражений. Эквивалентен '||', но имеет очень низкий приоритет и «краткость» действия. т.е если левое выражение равно true – левое не выполняется.

Логическое xor (исключающее ИЛИ).

Выполняет логическое исключающие или. Всегда выполняются оба правое и левое выражение.

С операторы отсутствующие в Перл.

В Перл отсутсвуют операторы языка С такие как:

унарное & – получить адрес. Для этого применяется '\'.

унарный * – переадресация.

(TYPE) – совмещение типов.

Операторы ограничители строк.

Обычно ограничители строк мы считаем литералами, но в Перл это операторы выполняющие разного рода интерполяцию и поиск по шаблону. Вы можете сами задавать удобные для вас ограничители. В следующей таблице приведен полный перечень вариантов. Фигурные скобки '{}' обозначают любой символ используемый для ограничителя. В случае использования скобок (круглых '', квадратных '[]', фигурных '{}', угловых '<>') в начале ставится открывающаяся скобка а в конце закрывающая.

По умолчанию Полное Функция Интерполяция

– – – –

'' q{} Literal нет

"" qq{} Литерал да

`` qx{} Команда да

qw{} Список слов нет

// m{} Шаблон да

s{}{} Подстановка да

tr{}{} Трансляция нет

В строках допускающих интерполяцию имена переменных начинающиеся с символов '$' или '@' – интерполируются т.е. в строку вставляется значение строки или массива.

Данные последовательности символов имеют специальное значение:

\t символ табуляции

\n символ новой строки

\r возврат

\f перевод формата

\v вертикальная табуляция

\b backspace (забой)

\a звонок

\e escape

\034 восьмеричный символ

\x1a шестьнадцатеричный символ

\c[ символ управления

\l нижний регистр следующего символа

\u верхний регистр следующего символа

\L нижний регистр для всех символов до \E

\U верхний регистр для всех символов до \E

\E ограничитель смены регистра

\Q отмена действия метасимволов до \E

Шаблоны интерполируются как регулярные выражения. Это выполняется вторым проходом после интерполяции переменных поэтому в шаблоны можно вставлять переменные. Для отмены интерполяции используйте '\Q'. Если вы применяете вложенные ограничители то внутренние ограничители работать не будут.

?PATERN?

?PATERN?

Действие этого оператора аналогично /шаблон/ но выполняется до первого совпадения. Это удобно для поиска наличия какой нибудь строки в одном или множестве файлов. Это не очень удачный оператор поэтому в следующих версиях Перл его возможно не будет.

m/PATERN/gimosx

/PATERN/gimosx

Поиск в строке по патерну (шаблону). В скалярном контексте возвращает логическое значение true (1) или false (''). Если строка не указана с помощью операторов '=~' или '!~' поиск ведется в строке $_

Опции:

 – Глобальный поиск. Поиск всех вхождений.

 – Сравнение не зависит от регистра (верхний или нижний)

m – Строка многострочна.

o – однопроходная компиляция

s – однострочная строка

x – используеются расширенные регулярные выражения.

Если '/' – ограничитель то начальное 'm' можно опустить. С помощью него в качестве ограничителя может быть любой символ кроме пробела.

PATTERN может содержать переменные которые будут интерполироваться (перекомпилироваться) каждый раз в момент вычисления.

Переменные $) и $| не интерполируются. Если вы хотите что бы такой шаблон интерполировался один раз – добавьте /o.

Это необходимо делать в циклах поиска для увеличения быстродействия однако если вы измените значение переменной Перл этого даже не заметит.

Если PATERN – нулевая строка то используется последнее регулярное выражение.

В скалярном контексте возвращается список элементы которого результаты выполнения выражений в скобках патерна ($1, $2, $3...).

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT