stones.gif (8081 байт)

Обработка нескольких вариантов ввода секретного слова

Допустим, вы хотите найти все строки, которые начинаются со слова Alex , а не просто строку, равную Alex . В Perl регулярным выражением (шаблоном, определяющим совокупность соответствующих строк), которое соответствует любой строке, начинающейся со слова Alex , будет ^Alex . Чтобы сравнить его со строкой, содержащейся в скалярной переменной $name , мы используем операцию сравнения:

if ($name =~ /^Alex\b/i) {
   # да, совпадает
} else {
    # нет, не совпадает
}

Регулярное выражение выделяется косой чертой с обеих сторон. Пробелы и другие символы, заключенные между косыми, имеют значение, поскольку они являются частью строки.

Это почти решает нашу проблему, но не позволяет выбрать alex или отклонить Alexx . Чтобы принять alex , мы добавляем опцию игнорирования регистра - прописную букву i после закрывающей косой. Чтобы отклонить Alexx , мы вводим в регулярное выражение специальный маркер границы слова в форме \b . Это гарантирует, что символ, следующий в регулярном выражении за первой буквой х , не является еще одной буквой. В результате получаем /^alex\b/i , что означает слово alex, стоящее в начале строки, за которым нет ни буквы, ни цифры, при этом регистр не имеет значения .

%words = qw (
   fred camel
   barney llama
   betty alpaca
   wilma alpaca
);
print "Как Вас зовут? ";
$name = <STDIN>;
chomp($name);
if ($name =~ /^Alex\b/i) {
   print "Привет, Alex! Рад тебя видеть!\n";
} else {
   print "Привет, $name!\n";   # обычное приветствие
   $secretword = $words{$name};   # получить секретное слово
   if ($secretword eq "") {   # не найдено
      $secretword = "groucho";    # можно пользовать
   }
   print "Секретное слово? ";
   $guess = <STDIN>;
   chomp($guess);
   while ($guess ne $secretword) {
      print "Неверно, попробуйте еще раз. Секретное слово? ";
      $guess = <STDIN>;
      chomp($guess);
   }
   print "Угадали!\n";
}

<< Предыдущая страница Содержание Наверх Следующая страница >>

stones.gif (8081 байт)
2000, "Язык Perl. Создание CGI-скриптов на Perl." . Использованы материалы книг: Маслов В.В. Основы программирования на языке Perl - М.: Радио и связь, Горячая линия - Телеком. 1999. - 144 c.: - ISBN 5-256-01356-4; Рэндал Шварц, Том Кристиансен Изучаем Perl : Пер. с англ. - К.: Издательская группа BHV, 1998 - 320 c.: - ISBN 5-7315-0031-2.
Все пожелания - авторам: Алексею Машьянову , Александру Яковлеву .