Логические операторы

Как и следовало ожидать, Perl содержит все необходимые логические операторы для работы с логическими (булевскими) значениями true/ false. Например, логические условия часто объединяются логическими операторами AND (&&) и OR (||):

if ($dessert{'cake'} && $dessert{'ice cream'}) {
# Оба условия истинны
print "Hooray! Cake and ice cream!\n";
} elsif ($dessert{'cake'} || $dessert{'ice cream'}) {
# По крайней мере, одно условие истинно
print "That's still good...\n";
} else {
# Оба условия ложны - ничего не делать
}

В некоторых ситуациях применяется ускоренное вычисление выражения. Если левая сторона логической операции AND ложна, то все выражение заведомо ложно, поскольку логический оператор AND возвращает истинное значение только в случае истинности обоих операндов. В нашем случае проверять правую сторону не нужно, поэтому она даже не обрабатывается. Что произойдет, если в приведенном примере переменная $hour равна 3:

if ( (9 <= $hour) && ($hour < 17) ) {
print "Aren't you supposed to be at work...?\n";
}

Аналогично при истинности левой стороны логической операции OR правая сторона также не вычисляется.


Допустим, в следующем выражении переменная $name содержит строку fred:

if ( ($name eq 'fred') || ($name eq 'barney') ) {
print "You're my kind of guy!\n";
}

Из-за этой особенности такие операторы называют «ускоренными» (short-circuit). Там, где это возможно, они стараются придти к результату самым быстрым путем. Ускоренное вычисление результата логическими операторами часто используется в программах. Возьмем пример с вычислением среднего значения:

if ( ($n != 0) && ($total/$n < 5) ) {
print "The average is below five.\n";
}

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

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Автоинкремент и автодекремент
Значение автоинкремента
Значение ускоренного логического оператора
Метки блоков
Модификаторы выражений