Игра с условиями в Perl
Например, такая задача. У нас есть переменная, в которую нужно поместить или значение по-умолчанию или значение из функции. Функция возвращает или значение, или undef. В дополнение ко всему, есть два замечания:
1. Функция или вызывается или нет, т.е. это дополнительное условие.
2. Переменная должна _всегда_ иметь положительное значение, т.е., если функция возвратит undef, нужно поместить в нее значение по-умолчанию.
Вариантов решения много. Самый простой вариант напрашивается еще до того, как прочитаешь задачу до конца.
Недостаток только один: нужно еще проверить, что содержит $value на выходе и присвоить значение по-умолчанию, если там undef.
Конечно, этот вариант быстро правится на такой:
Тут в случае, если function() вернет undef, мы имеем возможность подкорректировать значение переменной «на лету». Немного смущает такое количество строк в решении, в сущности, тривиальной задачи, поэтому перепишем с использованием тернарного оператора:
Все хорошо, однако выглядит по-прежнему не очень из-за повторяющихся кусков. Подумав, решение приходит: