Читать интересную книгу Введение в Perl - Владимир Маслов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 3 4 5 6 7 8 9 10 11 ... 16

'<<' – Сдвигает побитно влево значение выражения в левой части на количество бит указанное в правой.

'>>' – Сдвигает побитно вправо значение выражения в левой части на количество бит указанное в правой.

Именованные унарные операторы.

Фактически это функции с одним аргументом. Круглые скобки можно опускать.

Операторы отношений.

'<' – арифметическое меньше

'>' – арифметическое больше

'<=' – арифметическое меньше или равно

'>=' – арифметическое больше или равно

'lt' – строковое меньше

'gt' – строковое больше

'le' – строковое меньше или равно

'ge' – строковое больше или равно

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

'==' результат true если левая часть равна правой (равно)

'!=' – не равно

'<=>' – -1 если левая часть меньше правой, 0 если равна, 1 если больше.

'eq' – строковое равно

'ne' – строковое не равно

'cmp' – как и '<=>' применительно к строкам

Операторы работы с битами.

'&' – побитное AND

'|' – побитное OR

'^' – побитное XOR

Логические операторы && (AND) и || (OR).

'&&' – если левое выражение возвращает false, правое не выполняется.

'||' – если левое выражение возвращает true, правое не выполняется.

Отличие от подобных операторов в С заключается в том, что в С возращаемое значение либо 0 либо 1. Тогда как в Перл возвращается результат выражения.

Оператор диапазона '..'

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

Значение каждого элемента внутри списка увеличивается на 1.

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

Пример:

for $i (1..4)

{ print "$i ";

}

Результат: 1 2 3 4

В скалярном контексте результат – логическое значение. Каждая '..' операция устанавливает свое собственное состояние. Это false до тех пор пока левый операнд false. Как только левый операнд стал true результат – true до тех пока правый true, после чего результат опять – false. Если вы не хотите проверять правый операнд то используйте оператор '...'.

Правый операнд не вычисляется пока результат false и левый операнд не вычисляется пока пока результат true. Приоритетность оператора '..' немного ниже чем '&&' и '||'. Возвращаемое значение если flase – нулевая строка, если true – порядковый номер начиная с 1. Порядковый номер обнуляется для каждого нового диаппазона.

Последний порядковый номер добавляется строкой "E0" которая не изменяет его значение но позволяет фиксировать последнее значение.

Пример:

@алфавит = ('a'..'z'); # Массив малых букв латинского алфавита

@цифры = (0..9); # Массив цифр

Условный оператор '?:'

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

Пример:

$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

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

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 может содержать переменные которые будут интерполироваться (перекомпилироваться) каждый раз в момент вычисления.

1 ... 3 4 5 6 7 8 9 10 11 ... 16
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Введение в Perl - Владимир Маслов.

Оставить комментарий