Глава 1: Введение.
1.5. Прогулка по стране Perl
1.5.3. Секретное слово
Теперь, когда у нас есть имя, давайте сделаем так, чтобы человек, выполняющий эту программу, угадывал секретное слово. У всех, кроме Рэндала, программа будет непрерывно требовать ввести это слово, пока пользователь не наберет слово правильно. Сначала мы приведем текст программы, потом дадим пояснение к ней:
#! /usr/bin/perl -w
$secretword = "llama"; # секретное слово
print "What is your name? ";
$name = <STDIN>;
chomp $name;
if ($name eq "Randal") {
print "Hello, Randal! How good of you to be here!\n";
}
else {
print "Hello, $name ' \n"; # обычное приветствие
print "What is the secret word? ";
$guess = <STDIN>;
chomp($guess);
while ($guess ne $secretword) {
print "Wrong, try again. What is the secret worcl.•' '• ;
$guess = <STDIN>;
chomp($guess);
Сначала мы задаем секретное слово, помещая его в скалярную переменную $secretword. После приветствия программа спрашивает (посредством вызова еще одной функции print) у пользователя (не Рэндала) его вариант секретного слова. Этот вариант сравнивается с заданным секретным словом в операции ne. Данная операция возвращает значение "истина", если сравниваемые строки не равны (т.е. данная операция противоположна операции eq). Результат сравнения управляет циклом while, который выполняет этот блок операторов до тех пор, пока сравнение дает значение "истина".
Конечно, эта программа плохо защищена, потому что любой, кому надоест угадывать секретное слово, может просто прервать ее выполнение и вернуться к приглашению, а то и подсмотреть секретное слово в исходном тексте. Мы, однако, не пытались разработать систему обеспечения безопасности, а лишь хотели привести подходящий для данного раздела пример.