Чтение онлайн

на главную - закладки

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

start_form, # форму, в ней

"Имя: ", # надпись,

textfield(-name=>'nick', size=>8), p, # поле ввода,

"Э-почта: ", # надпись,

textfield(-name=>'email', size=>32), p, # поле ввода,

"Комментарий: ", p, # надпись,

textarea(-name=>'comments', # область ввода

– rows=>5, -columns=>50), p, # из 5 строк на 50 колонок,

submit('Отправить'), # кнопку,

end_form, # конец формы

hr, "\n"; # и горизонтальную черту

# далее проверяем, были ли присланы данные формы

if (param) { # если присланы данные - параметры формы

print # выводим:

a({href=>"mailto:".param('email')}, # ссылку на E-mail

param('nick')), # и имя, а также

" пишет: ", p, param('comments'), p, # комментарий

hr,"\n"; # и горизонтальную черту

}

print end_html; # оформляем конец страницы

При первом выполнении эта программа выводит пустую HTML-форму, а после того как форма заполнена и данные формы отправлены на сервер, на странице после формы выводится последний полученный комментарий. В результате будет сгенерирована web-страница, приведенная на рис. 18.1.

Рис. 18.1.Результат выполнения CGI-программы

Отлично протестированные подпрограммы стандартной библиотеки CGI выполняют все действия по созданию правильно оформленных web-страниц. Они скрывают от программиста трудности и тонкости при преобразовании параметров и обработке данных форм. Web-страницы можно формировать программно без использования разметки на языке HTML. Библиотека CGI также имеет объектно-ориентированный интерфейс со всеми необходимыми классами и методами для работы с объектами HTTP-запросов в CGI-программах.

Дальнейшим развитием CGI стали серверные технологии, в которых в шаблон HTML-документа включаются исполняемые фрагменты, написанные на встроенном языке программирования - C#, Java, PHP, Perl, Visual Basic или специальных языках шаблонов. На Perl написано немало систем для работы с шаблонами (templating system): от модулей, использующих несложную подстановку, до изощренных платформ программирования (application framework) для web-сервера. Perl в подобных системах применяется для обработки шаблонов (например, HTML::Template, Text::Template, Template Toolkit) и динамической генерации на основе шаблонов. Во многих системах (например, Apache::ASP, AxKit, Embperl, Mason, Apache::XPP) Perl применяется как встроенный язык, используемый для программирования действий в шаблонах. Все эти системы можно загрузить с сайта CPAN и установить обычным образом. (Подробнее об установке модулей речь шла в лекции 13.) Для работы с этими системами под ОС MS Windows проще всего загрузить с сайта perl.apache.org дистрибутив Perl, в состав которого входит сервер Apache с mod_perl и многие из перечисленных библиотек. Каждая из систем реализует оригинальный подход и обладает интересными возможностями, но мы остановимся подробнее на той из них, которая реализует тот же подход, что и в других распространенных системах программирования на основе шаблонов: ASP, JSP и PHP.

Система разработки web-сайтов Apache::ASP предлагает кросс-платформенные средства, аналогичные используемым в системе программирования ActiveState PerlScript для web-сервера Microsoft IIS. В этом подходе сочетаются естественное представление HTML-документа и возможность использовать богатые возможности языка программирования. В шаблоне HTML-страницы между тегами <% и %> располагаются фрагменты программы на языке Perl, которые выполняются при обработке запроса на страницу. Результат выполнения этих фрагментов включается в результирующую страницу, которая отсылается клиенту. Если переписать пример с гостевой книгой, используя классы из состава Apache::ASP, то он будет выглядеть так:

<html>

<head> <!-- шапка HTML-страницы -->

<meta http-equiv="content-type"

content="text/html; charset=windows-1251">

<title>Гостевая книга</title>

</head>

<body> <!-- тело HTML-страницы -->

<h3>Здесь Вы можете оставить свой отзыв</h3>

<form method="POST"> <!-- начало HTML-формы -->

<br/>Имя: <!-- 1-е поле формы -->

<input name="nick" type="text" size="8"

value="<%=$Request->Form('nick')%>"/>

<br/>Э-почта: <!-- 2-е поле формы -->

<input name="email" type="text" size="32"

value="<%=$Request->Form('email')%>"/>

<br/>Комментарий:<br/> <!-- 3-е поле формы -->

<textarea name="comments" rows="5" cols="50">

<%=$Request->Form('comments')%>

</textarea><br/>

<input type="submit" value="Отправить"/> <!-- кнопка -->

</form> <!-- конец HTML-формы -->

<hr/>

<% if($Request->Form('nick')) { %>

<a href="#">

<%=$Request->Form('nick')%>

</a> пишет:<br/>

<%=$Request->Form('comments')%><br/>

<hr/>

<% } %>

</body>

</html>

Обращение к значениям полей формы происходит с помощью метода Form предопределенного объекта $Request, хранящего информацию HTTP-запроса. Система Apache::ASP предоставляет программисту полный набор средств для динамического создания страниц, включая средства работы с клиентскими сеансами. Чтобы продемонстрировать возможности встроенного в шаблоны языка Perl, напишем шаблон ASP, реализующий web-интерфейс к базе данных. Perl в нем используется для извлечения из базы данных информации о моллюсках, производящих жемчужины, а также для формирования в цикле строк таблицы на основании результатов запроса. Фрагменты программы на Perl, встроенные в текст шаблона, выделены жирным шрифтом:

Поделиться:
Популярные книги

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Слово воина

Прозоров Александр Дмитриевич
1. Ведун
Фантастика:
фэнтези
8.91
рейтинг книги
Слово воина

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Тринадцатый VIII

NikL
8. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VIII

Устав от масок

Метельский Николай Александрович
9. Унесенный ветром
Фантастика:
боевая фантастика
6.83
рейтинг книги
Устав от масок

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.17
рейтинг книги
Шайтан Иван 6

Неучтенный элемент. Том 4

NikL
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 4

Лейтенант. Назад в СССР. Книга 8. Часть 1

Гаусс Максим
8. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Лейтенант. Назад в СССР. Книга 8. Часть 1

Практик

Листратов Валерий
5. Ушедший Род
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Практик

Попаданец на рыбалке. Книги 1-7

Скворцов Владимир Николаевич
Попаданец на рыбалке
Фантастика:
фэнтези
попаданцы
6.88
рейтинг книги
Попаданец на рыбалке. Книги 1-7

Маленькая женщина Большого

Зайцева Мария
5. Наша
Любовные романы:
эро литература
современные любовные романы
5.00
рейтинг книги
Маленькая женщина Большого

Печать пожирателя 6

Соломенный Илья
6. Пожиратель
Фантастика:
городское фэнтези
попаданцы
аниме
сказочная фантастика
фантастика: прочее
5.00
рейтинг книги
Печать пожирателя 6

Некромант

Щепетнов Евгений Владимирович
4. Петр Синельников
Фантастика:
боевая фантастика
6.20
рейтинг книги
Некромант

Лекарь Империи 2

Карелин Сергей Витальевич
2. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи 2