Оператор — это символ, который сообщает компилятору выполнить определенную математическую или логическую операцию, например: 3+2=5.
Язык Perl имеет множество встроенных операторов. Давайте рассмотрим наиболее часто используемые из них:
арифметические операторы
оператор сравнения
Логические операторы
оператор присваивания
Битовые операторы
оператор котировки
Другие операторы
приоритет оператора
В примере таблицы мы установили переменные $a равными 10 и $b равными 20.
оператор | описывать | Пример |
---|---|---|
+ | Добавление | $a + $b дает 30 |
- | операция вычитания | $a - $b дает -10 |
* | Умножение | $a * $b дает 200 |
/ | Операция дивизии | $b / $a дает 2 |
% | Операция поиска остатка, остаток после целочисленного деления | $b % $a дает 0 |
** | Умножить в степень | Результат $a**$b равен 10 в 20-й степени. |
Выходной результат выполнения вышеуказанной программы:
$a = 10, $b = 20$a + $b = 30$a - $b = -10$a * $b = 200$a / $b = 0,5$a % $b = 10$a ** $ б = 16
В примере таблицы мы установили переменные $a равными 10 и $b равными 20.
оператор | описывать | Пример |
---|---|---|
== | Проверяет, равны ли значения двух операндов, если равны, то условие истинно, в противном случае — ложно. | ($a == $b) неверно |
!= | Проверяет, равны ли значения двух операндов, если условие истинно, в противном случае — ложно. | ($a != $b) верно. |
<=> | Проверяет, равны ли значения двух операндов, возвращая -1, если число слева меньше числа справа, 0, если они равны, и 1, если число слева больше числа справа. | ($a <=> $b) возвращает -1. |
> | Проверяет, превышает ли значение левого операнда значение правого операнда, если да, то условие истинно, в противном случае — ложно. | ($a > $b) возвращает ложь. |
< | Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, то условие истинно, в противном случае возвращается ложь. | ($a < $b) возвращает true. |
>= | Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, то условие истинно, в противном случае возвращается ложь. | ($a >= $b) возвращает ложь. |
<= | Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, то условие истинно, в противном случае возвращается ложь. . | ($a <= $b) возвращает истину. |
Выходной результат выполнения вышеуказанной программы:
$a = 10, $b = 20$a == $b Результат — false$a != $b Результат — true$a <=> $b Возврат -1$a > $b Результат — false$a >= $b Результат ложный $a < $b результат true$a <= $b результат true
В следующем примере таблицы задайте для переменной $a значение «abc», а для $b — «xyz», а затем используйте операторы сравнения для вычисления результата.
оператор | описывать | Пример |
---|---|---|
лт | Проверяет, меньше ли строка слева, чем строка справа, если да, то возвращается true, в противном случае возвращается false. | ($a lt $b) возвращает true. |
гт | Проверяет, больше ли строка слева, чем строка справа, если да, то возвращается true, в противном случае возвращается false. | ($a gt $b) возвращает ложь. |
ле | Проверяет, меньше ли строка слева или равна строке справа, если да, то возвращается true, в противном случае возвращается false. | ($a le $b) возвращает true |
ге | Проверяет, больше или равна строка слева строке справа; если да, то возвращается true, в противном случае возвращается false. | ($a ge $b) возвращает ложь. |
экв. | Проверяет, равна ли строка слева строке справа, если да, то возвращается true, в противном случае возвращается false. | ($a eq $b) возвращает ложь. |
пе | Проверяет, не равна ли строка слева строке справа, если да, то возвращается true, в противном случае возвращается false. | ($a ne $b) возвращает true |
cmp | Возвращает 1, если строка слева больше, чем строка справа, 0, если равна, и -1, если строка слева меньше строки справа. | ($a cmp $b) возвращает -1. |
Выходной результат выполнения вышеуказанной программы:
$a = abc, $b = xyzabc lt $b возвращает true$a gt $b возвращает false$a le $b возвращает true$a ge $b возвращает false$a ne $b возвращает true$a cmp $b возвращает -1
В примере таблицы мы установили переменные $a равными 10 и $b равными 20.
оператор | описывать | Пример |
---|---|---|
= | Простой оператор присваивания, присваивает значение правого операнда левому операнду. | $c = $a + $b присвоит значение $a + $b переменной $c. |
+= | Оператор сложения и присваивания присваивает результат добавления правого операнда к левому операнду левому операнду. | $c += $a равно $c = $c + $a |
-= | Оператор вычитания И присваивания присваивает результат вычитания правого операнда из левого операнда левому операнду. | $c -= $a равно $c = $c - $a |
*= | Оператор умножения и присваивания присваивает результат умножения правого операнда на левый операнд левому операнду. | $c *= $a равно $c = $c * $a |
/= | Оператор деления и присваивания присваивает результат деления левого операнда на правый операнд левому операнду. | $c /= $a равно $c = $c / $a |
%= | Оператор по модулю и присваиванию находит модуль двух операндов и присваивает его левому операнду. | $c %= $a эквивалентно $c = $c % a |
**= | Оператор возведения в степень и присваивания находит степень двух операндов и присваивает их левому операнду. | $c **= $a равно $c = $c ** $a |
Выходной результат выполнения вышеуказанной программы:
$a = 10, $b = 20. После присваивания $c = 30$c = 40, оператор операции $c += $a$c = 30, оператор операции $c -= $a$c = 300, оператор операции $c *= $a$c = 30, оператор операции $c /= $a$c = 0, оператор операции $c %= $a$a = 4, $c = 2$c = 16, оператор операции $c **= $a
Побитовые операторы оперируют битами и выполняют операции бит за битом.
Установив $a = 60, $b = 13, теперь в двоичном формате они выглядят так:
$a = 0011 1100$b = 0000 1101-----------------$a&$b = 0000 1100$a|$b = 0011 1101$a^$b = 0011 0001 ~$а = 1100 0011
Побитовые операторы, поддерживаемые Perl, показаны в следующей таблице:
оператор | описывать | Пример |
---|---|---|
& | Бинарный оператор И копирует один бит в результат, если присутствуют оба операнда. | ($a и $b) дадут вам 12, что в двоичном формате равно 0000 1100. |
| | Бинарный оператор ИЛИ копирует один бит в результат, если он присутствует в любом операнде. | ($a | $b) получит 61, что равно 0011 1101 в двоичном формате. |
^ | Бинарный оператор XOR копирует бит в результат, если он присутствует в одном из операндов, но не в обоих. | ($a ^ $b) даст вам 49, что в двоичном формате равно 0011 0001. |
~ | Оператор двоичного дополнения — это унарный оператор, который имеет эффект «переворачивания» битов, то есть 0 становится 1, а 1 становится 0. | (~$a ) даст -61, что равно 1100 0011 в двоичном виде, форме дополнения до единицы двоичного числа со знаком. |
<< | Бинарный оператор сдвига влево. Значение левого операнда сдвигается влево на количество бит, заданное правым операндом. | $a << 2 даст вам 240, что в двоичном формате равно 1111 0000. |
>> | Бинарный оператор сдвига вправо. Значение левого операнда сдвигается вправо на количество бит, заданное правым операндом. | $a >> 2 получит 15, что в двоичном формате равно 0000 1111. |
Выходной результат выполнения вышеуказанной программы:
$a = 60, $b = 13$a & $b = 12$a | $b = 61$a ^ $b = 49~$a = -61$a << 2 = 240$a >> 2 = 15
Логические операторы Perl показаны в следующей таблице.
В примере таблицы мы устанавливаем для переменной $a значение true, а для $b — значение false.
оператор | описывать | Пример |
---|---|---|
и | Логический оператор И. Если оба операнда истинны, условие истинно. | ($a и $b) неверно. |
&& | Логический оператор И в стиле C. Условие истинно, если оба операнда истинны. | ($a && $b) неверно. |
или | Логический оператор ИЛИ. Условие истинно, если любой из двух операндов не равен нулю. | ($a или $b) верно. |
|| | Логический оператор ИЛИ в стиле C. Условие истинно, если любой из двух операндов не равен нулю. | ($a || $b) верно. |
нет | Логический оператор НЕ. Используется для инвертирования логического состояния операнда. Если условие истинно, логический оператор НЕ сделает его ложным. | not($a и $b) верно. |
Выходной результат выполнения вышеуказанной программы:
$a = true, $b = false$a и $b = false$a && $b = false$a или $b = true$a || $b = truenot($a)= 1
Операторы кавычек Perl показаны в следующей таблице.
оператор | описывать | Пример |
---|---|---|
д{ } | Добавить одинарные кавычки в строку | q{abcd} приводит к 'abcd' |
qq{ } | Добавить двойные кавычки в строку | qq{abcd} приводит к "abcd" |
qx{ } | Добавить обратные кавычки в строку | qx{abcd} приводит к `abcd` |
Выходной результат выполнения вышеуказанной программы:
q{a = $a} = a = $aqq{a = $a} = a = 10qx{date} = пятница, 10 июня 2016 г., 16:22:33 CST
Помимо операторов, упомянутых выше, Perl также поддерживает следующие операторы:
оператор | описывать | Пример |
---|---|---|
. | Точка (.) используется для объединения двух строк. | Если $a="run", $b="oob" , результатом $a.$b будет "codercto" |
х | Оператор x возвращает количество повторений строки. | ('-' x 3) Результат: ---. |
.. | .. является оператором диапазона. | (2..5) Выходной результат: (2, 3, 4, 5) |
++ | Оператор инкремента, целочисленное значение увеличивается на 1 | $a =10, $a++ выведет 11 |
-- | Оператор декремента, уменьшает целое значение на 1. | $a =10, $a — результат равен 9 |
-> | Стрелки используются для указания методов класса. | $obj->$a представляет метод $a объекта $obj. |
Выходной результат выполнения вышеуказанной программы:
$a = запустить, $b = oob$a. $b = codercto"-" x 3 = ---(2..5) = 2 3 4 5$a = 10, $b = 15$a выполнить $a++ = 11$b выполнить $b-- = 14
В следующей таблице указан приоритет операторов языка Perl:
оператор | ассоциативность |
---|---|
++, -- | никто |
-, ~, ! | справа налево |
** | справа налево |
=~, !~ | слева направо |
*, /, %, х | слева направо |
+, -, . | слева направо |
<<, >> | слева направо |
-е, -р, | никто |
<, <=, >, >=, lt, le, gt, ge | слева направо |
==, !=, <=>, eq, ne, cmp | слева направо |
& | слева направо |
|, ^ | слева направо |
&& | слева направо |
|| | слева направо |
.. | слева направо |
? и : | справа налево |
=, +=, -=, *=, | справа налево |
другой | |
, | слева направо |
нет | слева направо |
и | слева направо |
или, xor | слева направо |
Выходной результат выполнения вышеуказанной программы:
$a = 20, $b = 10, $c = 15, $d = 5($a + $b) * $c / $d = 90(($a + $b) * $c) / $d = 90($a + $b) * ($c / $d) = 90$a + ($b * $c)/ $d = 50