Простейшая гостевая книга на Perl.
Автор: Тахир Лугуманов
В наш век разнообразных порталов и CMS(систем управления контентом ) веб-программирование является чуть ли не обязательным для создания какого-либо хоть чуть-чуть сложного сайта. В этой статье мы просмотрим создание минимальной гостевой книги, с помощью которой вы сможете, например, получать отзывы от посетителей вашего сайта.
Вот весь код программы:
#!/usr/bin/perl
$path = "bd.txt";
$this_file
= "/index.html";
print "Content-Type: text/html\n\n";
use CGI qw (:standard);
$cg=new
CGI();
$if_post = $cg->param (if_post);
&post if ($if_post eq 'yes');
&printall;
sub post
{
$nick = $cg->param(nick);
$message
= $cg->param(message);
$time = localtime;
$message =~ s/<(.{1,10})>//g;
$message =~
s/\n/<br>/g;
$to_file = "$nick \@\@ $message \@\@ $time\n";
open (OUT_F, ">>$path");
print OUT_F $to_file;
close (OUT_F);
}
sub printall
{
open
(INPUT, "<$path");
@text = <INPUT>;
close (INPUT);
for ($z1=$#text;
$z1>=0; $z1--)
{
($time, $nick, $message)=split (/ \@\@ /, $text [$z1]);
print "$nick ($time):<br>$message<br><br>";
}
print "
<form
action=$this_file method=get>
Nick: <input name=nick><br>
Message:
<TEXTAREA ROWS=15 COLS=50 name=message></TEXTAREA><br>
<input name=if_post
value=yes type=hidden>
<input type=submit
value=Îòïðàâèòü>
</form>
";
}
А теперь разберем его построчно.
Самая главная часть перл программы - строка: #!/usr/bin/perl . Именно она указывает веб-серверу, откуда брать интерпретатор.
Следующая строки:
$path = "bd.txt";
$this_file = "/index.html";
print "Content-Type: text/html\n\n";
Выводит заголовок, который необходим, для того, чтобы браузер мог понять, что перед ним веб-страница.use CGI qw (:standard); $cg=new CGI();
Подключаем модуль CGI, и создаем объект, через которого мы будем использовать функции этого модуля.$if_post = $cg->param (if_post);
&post if ($if_post eq 'yes');
&printall;
Вызываем функцию, которая выводит файл с сообщениями оставленными пользователями, и форму для отправки сообщений.sub post {
Объявляем функцию post.$nick = $cg->param(nick);
$message = $cg->param(message);
$time = localtime;
$message =~ s/<(.{1,10})>//g;
$message =~ s/\n/<br>/g;
$to_file = "$nick \@\@ $message \@\@ $time\n";
open (OUT_F, ">>$path");
print OUT_F $to_file;
close (OUT_F);
}
Закрывается объявление функции.sub printall
{
open (INPUT, "<$path");
@text = <INPUT>;
close (INPUT);
for ($z1=$#text; $z1>=0; $z1--)
{
($time, $nick, $message)=split (/ \@\@ /, $text [$z1]);
print "$nick ($time):<br>$message<br><br>";
}
print "
<form action=$this_file method=get>
Nick: <input name=nick><br>
Message: <TEXTAREA ROWS=15 COLS=50 name=message></TEXTAREA><br>
<input name=if_post value=yes type=hidden>
<input type=submit value=Ioi?aaeou>
</form>
";
}
Закрывается объявление функции.