Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
9:02:2008, 13:48
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 122 Регистрация: 12:12:2007 Из: Волгоград Пользователь №: 14 203 Специализация: Программист, знаю HTML, JS, CSS, Паскаль. Репутация: 2
|
Изучаю Perl по саоучителю Клинтона Пирса - Освой Perl за 24 часа. Сегодня был на 4 часу. Объяснялось про массивы. И в качестве применения всего нового изученного, автор дает программу:
Код #!/usr/bin/perl -w @words=qw( Интернет Ответ Принтер Программа ); $guesses[0]=""; $wrong=0; $choice=$words[rand @words]; $hangman="0-|--<"; @letters=split(//, $choice); @hangman=split(//, $hangman); @blankword=(0) x scalar(@hangman); OUTER: while ($wrong<@hangman) { foreach $i (0..$#letters) { if ($blankword[$i]) { print $blankword[$i]; } else { print "-"; } } print "\n"; if ($wrong) { print @hangman[0..$wrong-1] } print "\n Ваш выбор: "; $guess=<STDIN>; chomp $guess; foreach(@guesses) { next OUTER if ($_ eq $guess); } $guesses[$#guesses]=$guess; $right=0; for ($i=0; $i<@letters; $i++) { if ($letters[$i] eq $guess) { $blankword[$i]=$guess; $right=1; } } $wrong++ unless($right); if (join('', @blankword) eq $choice) { print "Вы угадали!\n"; exit; } } print "$hangman\n Печально, но было загадано слово $choice.\n"; У меня два вопроса по ней: 1. Почему в строчках 23-25 не нужна точка с запятой после печати (вернее, почему её можно тут не ставить)? 2. Не врублюсь в строчку 39. Автор её описывает просто как: "Переменная $wrong увеличивается на единицу при каждом неправильном ответе пользователя.". Но из строчки я только понял $wrong++. А что такое unless($right)? И вообще сама конструкция не понятна, там нет if'а. P.S. Как я врубился, эту строчку можно заменить if (!$right) {$wrong++;};. |
|
Сообщение
#1
|
|
![]() |
|
|
10:02:2008, 23:17
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 198 Регистрация: 4:08:2006 Из: Vladivostok.pm Пользователь №: 5 749 Специализация: Perl, Web Репутация: 4
|
По пункту 1.
Перед закрытие блока точку с запятой ставить не обязательно. По пункту 2. bla_bla_bla unless $bool; действительно имеет такое же значение как и bla_bla_bla if !$bool; |
|
Сообщение
#2
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 11:39 |