Интернет Университет информационных технологий www.intuit.ru
мои курсы мои настройки моя корзина помощь
  Лекции
Основы web-технологий
Глава 1.
Введение в HTML-разметку
Глава 2.
Применение каскадных таблиц стилей
Глава 3.
JavaScript
Глава 4.
Интерфейс Web-приложений
  19.   Общие сведения
  20.   Введение в программирование CGI-...
  21.   Введение в программирование на Perl
  22.   Введение в программирование скри...
  23.   HTML-формы
  24.   Применение методов доступа HTTP ...
      Экзамен
      Ссылки к курсу

  Общение
однокурсники
форум по курсу
вопрос преподавателю

Основы web-технологий
Глава 4. Интерфейс Web-приложений версия для печати: HTML, PDF
Лекция #21: Введение в программирование на Perl Страницы: 1 2 3 4 вопросы »

Язык программирования Perl является основным средством разработки CGI-скриптов для Web-узлов. Его не применяют только там, где требуется высокая эффективность кода и нет стандартных библиотек для Perl.

Perl как язык разработки скриптов имеет ряд преимуществ. Перечислим их в порядке значимости:

  • независимость от программно-аппаратной платформы;
  • мощные средства разбора строк;
  • простота работы с переменными окружения;
  • простота работы со входными и выходными стандартными потоками;
  • возможность чтения заданного числа символов из входного потока;
  • хешированные таблицы;
  • возможность организации конвейеров;
  • библиотеки TCP/IP-обмена;
  • множество стандартных библиотек прикладных программ.

Все это делает программное обеспечение, написанное на Perl, мобильным, а разработку программ — быстрой и простой.

Структура Perl-программы

У программы на языке Perl нет жестко заданной структуры. Точнее сказать, программист не обязан ее соблюдать. Если же он захочет, чтобы интерпретатор контролировал объявление и использование переменных и конструкций языка, то при помощи класса strict он может такой контроль установить.

Программа на Perl состоит из операторов языка, которые должны заканчиваться символом ";". Например:

print "Привет, Perl.";

В общем случае операторы делятся на простые и составные. Простой оператор — это оператор print, например, а составной — while():

while() {/</&lt;/g ;/>/&gt;/g; print $_;};

Программа на Perl исполняется интерпретатором Perl. Есть и компиляторы с этого языка, но они используются реже. При программировании CGI-скриптов в Unix интерпретатор вызывается из того же файла, который содержит программу, например:

#!//usr/local/bin/perl
print "Привет, Perl."

В данном случае первая строка — это вызов интерпретатора с указанием полного пути к нему от корневого каталога файловой системы.

Вообще говоря, символ "#" — это символ начала комментария в Perl. Последовательность символов от символа "#" до конца строки рассматривается как комментарий. Часто в качестве комментария используют целые строки. В этом случае символ "#" ставится в первой позиции строки:

#!/usr/local/bin/perl
#
#Печатаем HTML-заголовок
#
print "Content-type: text/html\n\n";
#
#Содержание документа
#
print "Perl и CGI.";

Данный пример демонстрирует не только использование комментариев, но еще и формирование HTTP-заголовка. Без этого заголовка система выдаст сообщение о внутренней ошибке сервера, а в файле журнала ошибок появится запись о неправильном заголовке.

В последнее время основным рабочим местом авторов HTML-страниц и CGI-скриптов стали системы на платформе Windows. Как известно, конец строки в Windows и в Unix обозначается разными последовательностями неотображаемых символов. Если автор использует текстовый редактор в Windows, а потом как binary копирует файл в Unix, то эти символы передаются. Сервер начинает сообщать об ошибках, которые автору не видны. В таком случае можно сделать следующее: либо копировать программы как char, тогда происходит перекодировка, либо использовать "умные" текстовые редакторы.

Удобна также и Samba, которая позволяет редактировать "по месту" из Windows в Unix.

Стандартный поток вывода

Основная цель создания CGI-скрипта — обработка данных запроса пользователя и формирование отклика сервера на этот запрос. Можно рассматривать и другие задачи, которые позволяют решать CGI-скрипты, но эта задача — главная. Скрипт должен формировать не просто отклик, а HTTP-отклик. Это означает, что он должен сформировать заголовок и тело HTTP-сообщения, которые отделяются друг от друга пустой строкой.

Проще всего реализовать такой отклик с помощью команды print:

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><HEAD><BODY>";
print "<H1>Perl и CGI.</H1>";
print "</BODY></HTML>";

Первая строчка определяет заголовок HTTP-отклика и пустую строку (два символа "\n\n"). Остальные операторы print формируют тело сообщения. Оператор print пишет в стандартный вывод список своих аргументов. Вообще говоря, print можно использовать для вывода данных в любой файл. Если имя файла не указано, то вывод осуществляется в стандартный поток вывода.

Переменные окружения

Скрипт порождается сервером в некоторой операционной среде. Эта среда называется окружением (environment). Частью окружения являются так называемые переменные окружения. При вызове скрипта их порождает и присваивает им значения HTTP-сервер. Список переменных определен спецификацией Common Gateway Interface.

В Perl существует встроенный системный массив переменных окружения %ENV. Символ "%" перед именем массива означает, что это массив ассоциативный, т.е. значение элемента массива может быть выбрано путем указания ключа, с которым оно связано. Например, нужно определить метод доступа к скрипту:

#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
print "REQUEST_METHOD:$ENV{REQUEST_METHOD}";

В данном контексте символ "$" перед именем массива не должен вводить в заблуждение. Обращение происходит к элементу ассоциативного массива. Это скаляр, поэтому и применяется символ "$". Ключ, по которому выбирается значение, указан в фигурных скобках.

Очень полезен скрипт распечатки всех переменных окружения, которые переданы скрипту (perlenv2.htm). Обычно этот отчет получают при отладке HTML-форм:

#!/usr/local/bin/perl
print "Content-type: text/plain\n\n";
foreach $hkey (keys %ENV)
{
print "$hkey:$ENV{$hkey}";
}

Этот простой скрипт распечатывает значения всех переменных окружения, используя цикл foreach. В этом цикле переменная цикла hkey пробегает по всем уникальным ключам (именам переменных окружения), которые доставляет функция keys.

Перейти к следующей странице »
версия для печати: HTML, PDF
Страницы: 1 2 3 4 вопросы »
  Основные понятия
Cтандартный ввод, стандартный вывод, переменные окружения, генерация HTML-страниц.
 
  Информация о лекции
В этой лекции подробно разбираются особенности программирования CGI-скриптов на языке Perl. Определяются правила вызова скрипта, передачи ему данных и получение результатов работы скрипта для дальнейшего использования в HTTP-обмене и генерации HTML-страниц. Разбираются причины популярности Perl-скриптов среди Web-программистов.
 
  Учебники к курсу
Основы web-технологий
Основы web-технологий
Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И.,
Интернет-университет информационных технологий - ИНТУИТ.ру.
Курс лекций посвящен основам Web-технологий. В его рамках рассматриваются язык гипертекстовой разметки HTML, язык программирования динамического контента JavaScript, спецификация разработки прикладного программного обеспечения CGI и спецификация описания стилей представления информации CSS. Допущено УМО в области прикладной информатики для студентов высших учебных заведений, обучающихся по специальности 351400 "Прикладная информатика".
Dynamic HTML
Айзекс С., BHV-Санкт-Петербург.
Настольная книга Web-мастера: эффективное применение HTML, CSS и JavaScript
Коржинский С.Н., КноРус.
Практические занятия по HTML. Краткий курс
Будилов В.А., Наука и техника.
все книги по курсу »