Завершая разговор об операторах ветвления if/unless, следует сказать об использовании в них
локальных лексических переменных. Если в выражении-условии объявить лексическую переменную, то она
также будет видна во всех блоках оператора ветвления, включая блоки if, все elseif и else. Вне
оператора ветвления, естественно, такая переменная недоступна. Например, следующий оператор if
проверяет введенную пользователем строку на равенство yes или nо, сохраняя ее в локальной переменной
$answer, которая доступна во всех блоках составного оператора:
if ((my $answer = <STDIN>) =~ /^yes$/i) {
chomp $answer
print "'$answer' равно 'yes'";
} elsif ($answer =~ /^no$/i) {
chomp $answer;
print "'$answer' равно 'nо'"; }
else {
die "'$answer' не равно ни 'yes', ни'nо'";
}
ПРИМЕЧАНИЕ Регулярные выражения использованного оператора if определяют, что введенная пользователем
строка должна состоять либо из единственного слова yes, либо из единственного слова no, которое должно
начинаться с первой позиции, на что указывает метасимвол ^, и «простираться» до конца строки, на
что указывает метасимвол $. Флаг i в конце регулярного выражения определяет, что поиск соответствующего
слова происходит без учета регистра, то есть заданным регулярным выражениям будут соответствовать
слова yes или no, набранные как прописными, так и строчными буквами, а также в смешанном варианте.