Perl - статьи


Гостевая книга из Perl'овки - часть 2


Ну вот - каркас готов. Осталось написать подпрограммы записи (post) и просмотра (view) сообщений. Начнем с post.

Объявляем начало подпрограммы:

sub post {

Теперь нужно прочитать содержимое формы и записать его в переменные. Мы уже делали подобное для элемента action немного выше:

$nick = $q->param (nick); $msg = $q->param (msg);

Каждое сообщение в гостевой книге имеет дату. Получим ее:

$date = localtime;

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

Дата1 Ник1 Сообщение1 Дата2 Ник2 Сообщение2 Дата3 Ник3 Сообщение3

Таким образом, каждое сообщение занимает в файле отдельную строку, новые сообщения дописываются в конец файла. Но в этом способе есть свои "подводные камни". Что, если посетитель напишет нам послание на несколько строк? Тогда в файле получится "каша". Поэтому, чтобы ее избежать, лучше заменим признаки конца строки \n на переносы, которые поймет браузер (тег <BR>):

$msg =~ s/\n/<br>/g;

Теперь у нас есть все необходимые данные. Но прежде чем их записать, нужно их упорядочить, то есть сформировать строку для записи и в ее конец поставить знак перехода на новую строку. При этом необходимо учесть, что символ | является управляющим и для того чтобы отменить его управляющее действие, нужно перед ним поставить знак "\":

$to_base = "$date \|\| $nick \|\| $msg \|\| \n";

Итак, теперь у нас есть готовая для хранения строка. Осталось записать ее в файл. А для этого нужно открыть файл для записи.

Немного отвлекаясь от нашей программы, напомню, что файл можно открыть тремя способами: на чтение, на запись "с нуля" и на дописывание, соответственно с помощью символов и >>. В нашем случае нужно добавлять новое сообщение в конец файла и при этом не удалять старые данные. Итак, открываем файл на дописывание:

open (OUT, ">>$file");

записываем в файл нашу строку:




Начало  Назад  Вперед



Книжный магазин