Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документация, учебники по Perl.doc
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
2 Мб
Скачать
☆

Read_guestbook.Pl - чтение книги

#! e:\perl5\perl

# Первая строка, как обычно

require "ssi-pl.pl";

# Я использую навигационную панель в виде SSI-включения. Для этого используется модуль ssi-pl.pl

open(InFile, "guestbook.txt") || die;

# Открываем файл с записями гостевой книги.

@lines=<InFile>;

# Читаем строки в массив.

# Выдаем шапку HTML страницы.

print <<HTML;

Content-type: text/html

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<meta name="GENERATOR" content="Microsoft FrontPage 3.0">

<title>Книга жалоб и предложений - нам пишут</title>

</head>

<body background="../images/background_new.jpg">

<div align="left">

<table border="0" width="630" height="49">

<tr>

<td width="200" height="45"></td>

<td width="430" height="45"><p align="center"><img src="../images/guestbook.GIF"

alt="Книга жалоб" WIDTH="258" HEIGHT="60"></td>

</tr>

</table>

</div><div align="left">

<table border="0" width="630" height="53" cellspacing="0" cellpadding="0">

<tr>

<td width="200" height="260" valign="top"><p align="center"><small>

HTML

DoInclude("D:/InetPub/wwwroot/_menu.htm");

print <<HTML;

</p>

<p align="left"> </td>

<td width="10" height="53" valign="top"></td>

<td width="410" height="53" valign="top"><p align="center">Нам пишут:</p>

<table border="0" width="100%" cellspacing="0" cellpadding="0">

HTML

# Теперь выводим записи в невидимой (в смысле, рамка не видима) таблице.

# Чтобы свежие записи отображать первыми, обрабатываем массив строк с конца.

for ($i=$#lines; $i>=$[; $i--) #обрабатываем строки файла с конца

{

# Разделяем строку на части

@item=split('&', $lines[$i]); #разделяем на части

# Теперь заменяем HTML тэги в записи (на случай какого-нибудь хитрого юзера)

foreach (@item)

{

$_=~s/</</g;

$_=~s/>/>/g;

}

# Приступаем непосредственно к выводу записей в HTML

print "<tr>\n";

print '<td width="100%"><dl>'."\n";

# В зависимости от поля, где посетителю предлагался выбор понравилось - не понравилось,

# рисуем картинку с веселой или грустной мордочкой соответственно. В качестве ALT тэга

# картинки пропишем IP адрес посетителя.

print '<dt><img src="../images/'.$item[3].'.gif" width="31" height="31" alt="';

priny $item[6].'" align="absbottom"'."\n";

# Выводим остальные поля.

print 'align="absmiddle"><small>'.' '.$item[4]."</small></dt>\n";

print '<dt><small>'.$item[1].',  '.$item[2]."</small></dt>\n";

print '<dt><a href="mailto:'.$item[5].'"><small>'.$item[5].'</small></a></dt>'."\n";

print '<dt><small>'.$item[0]."</small></dt>\n";

print "</dl>\n";

print "</td>\n";

print "</tr>\n";

}

# Осталось вывести окончание HTML

print <<HTML;

</table>

</td>

<td width="10" height="53" valign="top"></td>

</tr>

</table>

</div>

</body>

</html>

HTML

close InFile;

# Закрываем файл с записями гостевой книги.

Подпрограммы

Для применения подпрограммы ее необходимо определить либо в текщем модуле (файле) либо во внешнем модуле (файле). Подпрограммы определяются и декларируются следующим образом:

sub имя; # Только декларация. Определение ниже.

sub имя (прототипы); # То же но с декларацией параметров.

sub имя блок; # Декларация и определение.

sub имя (прототипы) блок; # То же, но с парамметрами.

Для определения динамичской анонимной подпрограммы можно указать:

$переменная = sub блок;

Для импортирования подпрограмм из других модулей используйте:

use модуль qw(подпрограмма1 подпрограмма2);

Вызов подпрограммы:

имя(список параметров); # символ '&' можно не указывать.

имя список; # Если подпрогрмма уже декларирована.

&имя; # Параметры в @_

Все параметры передаются подпрограмме как массив @_. Соответсвенно $_[0] - первый параметр, $_[1] - второй и т.д. Массив @_ - локальный, но он содержит адреса параметров, поэтому можно изменять значение параметров.

Возвращаемое значение подпрограммы - результат последнего оператора. Это может быть как скаляр так и массив. Можно принудительно возвращать результат используя функцию return().

Подпрограмму можно вызвать используя префикс '&' перед именем подпрограммы. Если подпрограмма предварительно продекларирована, то префикс и скобки можно опустить.