Начинающим Web - разработчикам сайтов

Категории
Полезные сайты
Операторы
Основные понятия
Синтаксис языка Perl
Переменные
Встроенные переменные
Шаблоны
      Операторы ( 1 стр. )
Операторы ( 2 стр. )
Встроенные функции - 1
Встроенные функции -2
Подпрограммы и др.

Операторы ( 1стр )

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

Термы и операторы списка

Таковые в себе содержат переменные, логические и арифметические выражения в скобках, кавычки, функции с их параметрами (заключённые в круглые скобки). Последние лишь иммитируют функцию потому, как любой списковый (напр. print( ) ) или унарный (напр. unpack( ) ) оператор имеют скобки в которых содержится список аргументов, которые имеют самый большой приоритет, что и обыкновенные функции. В случае отсутсвия скобок приоритетность спискового оператора определяют следующим образом. Сначала идут аргументы (слева-направо), стоящие сразу после спискового оператора, затем также (слева-направо), стоящие до оператора. Пример:

@ i = ( 'R ', 'L ', print 'P ', 'E ');
print "\n", @ i, "\n"; # выведет PE и RL

Аналогично термам обрабатываются последовательности do{} и eval{}.

Оператор "->" ("стрелка")

Является инфиксным оператором ссылки. Если правая часть является [...] или {...} подпрограммой, тогда левая часть должна быть символьной ссылкой на массив или хэш. В другом случае, если правая часть - это имя метода или скалярная переменная содержащая имя метода, то левая часть должна быть объектом или именем класса.

Операторы "++" и "--"

Как известно "++" - инкременнт, а "--" декремент, т.е увеличение или уменьшение на одну еденицу. И операторы, как вы догадались, названы так не случайно и работают они по такому же принципу. Зависит только от того, где он будет расположен, относительно переменной. При написании данного оператора до переменной будет сначала изменено значение переменной, а затем полученный результат будет использован. В противном случае ( после ) - сначала применение, потом изменение значения переменной. При написании буквенных символов следует учитывать, что большие и маленькие буквы в языке Perl имеют разные классы. Пример:

print ++($i = "z9") # получим результат а0

print ++($i = "Z9") # получим результат А0

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

В языке Perl двойная звездочка "**" является экспоненциальным оператором. Приведем пример:

print 3**3 # 27

print -3**3 # -27

Примечание: запомните -3**3 - это -(3**3), но никак не (-3)**3 .

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

  • ! - логическое отрицание
  • - - унарный минус, при числовом значении переменной обозначает обычное арифметическое вычетание. Если операндом является идентификатор, то возвращается строка, состоящая из знака минус и идентификатора.
  • + - унарный плюс, при числовом значении переменной является арифметическим плюсом и влияние на строки не имеет, но может применяться для отделения имя функции от выражения заключенного в скобки, которое иначе рассматривается как список аргументов.
  • ~ - унарная тильда, указатель побитового отрицания
  • \ - получение ссылки на переменную, стоящую за ним

Операторы связки "=~" и "!="

Оператор "=~" связывает левую часть выражения с правой, которая является определенным шаблоном. В случае не указания данного оператора, за него по умолчанию будет действовать переменная $_ . Правый аргумент это образец поиска, подстановки или трансляции, левый аргумент - это то, что должно быть подставлено вместо $_ . Возвращаемая величина показывает успех операции. Оператор " ! ~ '' это тоже самое, что и " = ~ '', только возвращаемая величина является отрицательной в логическом смысле ( НЕТ).

Бинарные операторы

  • * - умножение чисел
  • / - деление чисел
  • % - вычисление модуля двух чисел
  • x - оператор повторений, в скалярном контексте справа от оператора число повторений, а слева - строка для повторения. В списковом контенте - элемент для повторения является список. Приведем примеры в соответствии их рассмотрения:

    print 'a' x '6'; # получим 'aaaaaa'

    print (0,9) x 5; # получим 0909090909

Операторы сдвига ">>" и "<<"

  • >> - выполняет двоичный сдвиг левых аргументов вправо на количество разрядов, указанное в правых аргументах. Аргументы должны быть целочисленными.
  • << - выполняет двоичный сдвиг левых аргументов влево на количество разрядов, указанное в правых аргументах. Аргументы должны быть целочисленными.

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

  • < - возвращает TRUE ( истина) если левое значение численно меньше, чем правое
  • lt - возвращает TRUE если левое значение (строчное) меньше, чем правое
  • > - возвращает TRUE если левое значение численно больше, чем правое
  • gt - возвращает TRUE если левое значение (строчное) больше , чем правое
  • <= - возвращает TRUE если левое значение численно меньше или равно, чем правое
  • le - возвращает TRUE если левое значение (строчное) меньше или равно , чем правое
  • >= - возвращает TRUE если левое значение численно больше или равно , чем правое
  • ge - возвращает TRUE если левое значение (строчное) больше или равно , чем правое

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

  • == - возвращает TRUE( истина) если левое значение численно равно правому
  • eg - возвращает TRUE если левое значение (строчное) равно правому
  • != - возвращает TRUE если левое значение численно не равно правому
  • ne - возвращает TRUE если левое значение (строчное) не равно правому
  • <=> - возвращает -1, если < ; 0, если = и 1, если > , применим к числам
  • cmr - возвращает -1 , если < ; 0 , если = и 1 , если > , применим к строкам

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

  • & - возвращает побитовое && , т.е. логическое И (объединение)
  • I - возвращает побитовое II, т.е. логическое ИЛИ (выбор левого аргумента)
  • ^ - возвращает побитовое исключение ИЛИ (левый и правый аргумент будет обработан)

Логические операторы И (&&) и ИЛИ (II)

  • && - если левый аргумент верен ( true ), то будет проверен и правый, если неверен (false) - правый тоже будет считаться не верным и не будет проверен
  • II - если левый аргумент неверен (false) , то будет проверен правый, если верен ( true ) - правый не будет проверяться

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

Данный оператор обозначается двумя точками " .. " . Применение в разных контекстах (списковом и скалярном) приводят к разным результатам его работы. Так например в списковом контексте он работает от левого значения списка к правому с шагом - одна единица. Пример:

for $i (8..15)

{print "$i ";

} # получим следующее: 8 9 10 11 12 13 14 15

В скалярном контексте оператор ".." работает по результату логического "&&" и "II", т.е. если левый аргумент TRUE , то " .. " принимает также значение TRUE и правей тоже будет обработан (если не хотите использовать его укажите " ... ") или наоборот левый FALSE, то " .." - FALSE и правый игнорируется и такое же подобие с ИЛИ ( II).

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

Работает по принципу "верю-неверю". Если слева от "?" выражение " верно", то выводится условие, записанное до ": ", в противном случае ( не верно) - записанное после " :".

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

Стандартным оператором присваивания является "=", который без каких-либо изменений присваивает правое значение переменной, находящейся слева от него. Перечисленные ниже операторы выполняют аналогичные присвоения, но с учетом дополнительных действий, в зависимости от левого индекса:

  • **=
  • +=, -=, .=
  • *= , /=, %=, x=
  • &=, I=, ^=
  • <<=, >>=
  • &&=, II=

Примечание: Приоритетность всех перечисленных операторов одинакова с "=".

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

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

Оператор "NOT" (логическое НЕ)

Имеет одинаковое применение с " ! " ( см. выше ), но с более низким приоритетом.

Операторы: Логическое И, ИЛИ и Исключающее ИЛИ

  • and - эквивалент оператора " &&" ( см. выше ), но имеет более низкий приоритет и " ограниченность " действия. т.е он не вернётся к левому аргументу, если он "false"
  • or - работает по принципу предыдущего, но эквивалентен " II" ( см. выше )
  • xor - исключающее ИЛИ, т.е обрабатывает и левый и правый аргумент
Начинающим Web - разработчикам сайтов
Rambler's Top100 Рейтинг@Mail.ru
Hosted by uCoz