Чтение онлайн

на главную - закладки

Жанры

Шрифт:

ассоц. операторы

– –

левая термы и левосторонные списковые операторы

левая ->

– ++ –

правая **

правая ! ~ \ унарные + и -

левая =~ !~

левая * / % x

левая + – .

левая << >>

– именованные унарные операторы

– < > <= >= lt gt le ge

– == != <=> eq ne cmp

левая &

левая | ^

левая &&

левая ||

– ..

правая ?:

правая = += -= *= и т.д.

левая , =>

– правосторонние списковые операторы

левая not

левая and

левая or xor

Термы
и левосторонние списковые операторы.

Любой терм имеет самый высокий приоритет. К терму относятся переменные, кавычки и их операторы, арифметические и логические выражения в скобках, любые функции с параметрами в скобках. Фактически таких функций нет так как это просто унарные и списковые операторы просто они ведут себя подобно функциям с параметрами в скобках. Подробно смотри главу «Функции».

Если после любого спикового оператора ( print, и т.д.) или унарного оператора (chdir, и т.д.) следует левая круглая скобка, то операторы внутри скобок имеют наивысший приоритет. Так же как и обычные функции.

Если скобки отсутсвуют то приоритет списковых операторов или наивысший или наименьший в отношении операторов справа или слева от него.

Например:

@i = ('a ','b ', print 'c ', 'd ');

print «\n»,@i,"\n";

Результат:

c d

a b 1

Здесь мы имеем списковый оператор print. Для запятых слева от него он имеет наименьший приоритет, но повышает приоритет правой запятой.

Поэтому правая запятая воспринимается как параметр для print и печатается 'c d' а левая просто записывает код завершения операции в массив @i и последний print показывает это.

Оператор '->'

Так же как в С или С++ это инфиксный оператор переадрессации. Если справа от него стоит [...] или {...} выражение, то правая часть может быть непосредственной или символической ссылкой на массив или хеш.

В противном случае правая сторона это метод или простой скаляр содержащий имя метода, а правая или объект или имя класса. Подробно смотри главу «Классы».

Операторы ++ (инкремент) и (декремент).

Эти операторы работают так же как и в С. Если оператор стоит перед переменной то значение переменной изменяется на 1 и полученной значение используется. Если после переменной то ее величина изменяется после применения.

Употребление инкремента к строковым переменным в Перл имеет одну особенность.

Каждый символ остается в своем классе (большие, малые, цифры) и учитывается перенос предыдущего символа. Таким образом строковые переменные с цифрами работают как числовые переменные.

Пример:

print ++($i = «09»); # Результат «10»

print ++($i =

«a9»); # «b0»

print ++($i = «az»); # «ba»

print ++($i = «aZ»); # «bA»

Оператор ** (возведение в степень)

Пример:

print 4**2 # Результат 16

print -4**2 # Результат -16 т.е.
– (4**2)

Унарные операторы.

'!' – логическое отрицание

'' – арифметический минус

'~' – побитная инверсия (дополнение до 1)

'+' – арифметический плюс

'\' – получение ссылки на переменную (как & в С)

Операторы «привязки» =~ и !~ .

Эти «необычные» я бы даже сказал оригинальные операторы имеют очень широкое применение в Перл. Можно даже назвать их «оригинальным» решением.

Оператор =~ логически связывает левую часть выражения с патерном (pattern – образец, шаблон, модель) в правой. По умолчанию поиск или изменение по патерну выполняется в переменной $_ Операторы привязки позволяют делать это с любой переменной указанной в левой части. Логическим результатом будет успех операции. Если в правой части вместо патерна присутсвует выражение, то результат этого выражения воспринимается как патерн. Однако это не очень эффективно т.к. патерн будет компилироваться во время исполнения программы что заметно снизит быстродействие. 

Оператор !~ аналогичен =~ только результат совпадения инвентируется (логическое «нет»). Подробное применение этих операторов приводится в главе «Патерны».

Мультипликативные операторы.

'*' – арифметическое умножение

'/' – арифметическое деление

'%' – арифметический модуль

'x' – оператор повторения

В скалярном контексте возвращает строку левой части повторенную величиной указанной в правой части. В списковом контексте, если в левой части список в круглых скобках – повторенный список.

Пример:

print '*' x 5; # Результат '*****'

print (1,2) x 3; # Результат 121212

Аддитивные операторы.

'+' – арифметический плюс

'' – арифметический минус

'.' – конкатенация (объединение) строк

Операторы сдвига.

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

Поделиться:
Популярные книги

Русь. Строительство империи 2

Гросов Виктор
2. Вежа. Русь
Фантастика:
попаданцы
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи 2

Маверик

Астахов Евгений Евгеньевич
4. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Маверик

Замуж второй раз, или Ещё посмотрим, кто из нас попал!

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Замуж второй раз, или Ещё посмотрим, кто из нас попал!

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Жена по ошибке

Ардова Алиса
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Жена по ошибке

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

На границе империй. Том 10. Часть 2

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 10. Часть 2

Единственная для темного эльфа 3

Мазарин Ан
3. Мир Верея. Драконья невеста
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Единственная для темного эльфа 3

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Кодекс Охотника. Книга XIX

Винокуров Юрий
19. Кодекс Охотника
Фантастика:
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XIX

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Ученичество. Книга 2

Понарошку Евгений
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ученичество. Книга 2

Пушкарь. Пенталогия

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
8.11
рейтинг книги
Пушкарь. Пенталогия