Управляющая конструкция unless

В управляющей конструкции if блок кода выполняется только в том случае, если условие истинно. Если блок кода должен выполняться только при ложном условии, замените if на unless:

unless ($fred =~ /^[A-Z_]\w*$/i) {
print "The value of \$fred doesn't look like a Perl identifier name.\n";
}

В сущности, конструкция unless эквивалентна проверке if с противоположным условием. Также можно сказать, что unless напоминает самостоятельную секцию else. Если вы встретили в программе конструкцию unless, смысл которой вам не понятен, перепишите ее (мысленно или реально) в виде проверки if:

if ($fred =~ /^[A-Z_]\w*$/i) {
# Ничего не делать
} else {
print "The value of \$fred doesn't look like a Perl identifier name.\n";
}

Такое действие не изменяет эффективности программы, которая должна компилировать в тот же внутренний байт-код. Также можно переписать условное выражение, используя оператор отрицания (!):

if ( ! ($fred =~ /^[A-Z_]\w*$/i) ) {
print "The value of \$fred doesn't look like a Perl identifier name.\n";
}

Выберите тот стиль программирования, который покажется вам наиболее логичным, потому что он же, скорее всего, будет выглядеть наиболее логично при сопровождении вашего кода. Если вы считаете вариант с отрицанием более логичным, используйте его. И все же использование unless выглядит более естественно.

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

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