Логические значения

В условии управляющей конструкции if может использоваться любое скалярное значение. В частности, это позволяет сохранить логический результат проверки (true или false) в переменной:

$is_bigger = $name gt 'fred';
if ($is_bigger) { ... }

Но как Perl определяет, какому логическому значению соответствует некоторое значение – true или false? В Perl не существует отдельного логического (булевского) типа данных, как в некоторых языках. Вместо этого Perl использует несколько простых правил:

• Если значение является числом, 0 соответствует false; все остальные числа соответствуют true.
• Если значение является строкой, пустая строка ('') соответствует false; все остальные строки соответствуют true.
• В остальных случаях (то есть если значение является другой разновидностью скалярных данных, а не числом или строкой) значение преобразуется в число или строку, после чего интерпретируется повторно.

В этих правилах скрыта одна тонкость. Поскольку строка '0' соответствует такому жескалярному значению, что и число 0, Perl интерпретирует их абсолютно одинаково. Это означает, что строка '0' – единственная непустая строка, которая интерпретируетсякак false. Если вам потребуется получить значение, обратноеимеющемуся логическому значению, используйте унарный оператор отрицания !. Если переменная в следующем фрагменте истинна, оператор возвращает false; для ложной переменной возвращается true:

if (! $is_bigger) {
# Действия для ложного значения $is_bigger
}

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

Статьи из раздела Perl на эту тему:
Автоматическое преобразование между числами и строками
Бинарные операторы присваивания
Вещественные литералы
Встроенные предупреждения Perl
Выбор имен переменных

Вернуться в раздел: Perl / 1. Скалярные данные