|
Техническое отступление: мы говорим с вами о
символе \n, и меня натолкнуло на мысль, что
уважаемые читатели, по моей вине могу подумать, что
и в памяти строки хранятся как
строка\n, хотя на самом деле
это не так, позвольте проиллюстрировать.
Строка Разработчик - лучший журнал\n будет
храниться в памяти как
|208| 224| 231| 240| 224| 225| 238| 242| 247| ...| 237| 224| 235| 10|,
где все эти цифры -- ASCII-коды соответствующих им
символов, а 10 -- ASCII код знака смены строки.
Таким образом знак новой строки, записывающийся
как \n, на самом деле только 1 символ, но ввиду того,
что он непечатный символ -- его заменили на 2
символа '\' и 'n'. Но, вернемся к программе -- мы все еще пытаемся
понять строку while ($_=<FILE>) {. То есть читать
строку в $_ из файла с дескриптором FILE до тех пор
пока строка не станет нулевой (пустой). А строка тогда станет
нулевой, когда программа не сможет прочитать
ничего из файла -- конец файла или пока не прочитает строку, которая будет
пустой и не будет оканчиваться символом
новой строки \n (см. выше) . Но что же это за
издевальство -- где точка с запятой? Вместо нее здесь
стоит открывающая фигурная скобка. Что же она
обозначает? А означает она блоковую операцию,
чтобы делать в цикле while (пока условие верно) несколько
операций вы должны заключить их в фигурные
скобки.
В данном случае мы в цикле читаем имена из файла
names, удаляем \n в конце (chomp) и если(if)
это прочитанное имя
равно имени, которое пользователь ввел, то флаговая
переменная ($flag) устанавливается в 1. Дальше мы
закрываем файл (close), если флаговая переменная равна 1,
то пишем "А я Вас помню", в противном случае (else)
открываем файл names для добавления (">>") и записываем туда
очередное имя.
А если перевести это на человеческий язык, то программа будет
запоминать все имена.
К сожалению, у меня не хватило места написать о CGI - программировании,
но обещаю, что это будет статьей через пару дней, так как
следующая по плану статья - Введение в HTML.
Поздравляем, вы только что прошли crash курс по
языку perl.
|