
- •Язык программирования perl
- •Perl как язык программирования
- •История perl
- •Perl - интерпретируемый язык программирования
- •Богатство возможностей языка perl
- •Использование perl
- •Использование perl как фильтра данных
- •Использование языка perl как шлюза безопасности
- •Frontend-программы для связи с базой данных
- •Использование языка perl для написания cgicкриптов.
- •Знакомство с языком perl
- •Установка perl
- •Использование отладчика perl
- •Типы данных в perl
- •Переменные
- •Скалярные переменные
- •Массивы
- •Роль контекста аля переменных скалярного и векторного типа
- •Ассоциативные массивы
- •Операторы perl
- •Арифметические операторы
- •Побитовые операторы
- •Операторы сравнения
- •Логические операторы
- •Строковые операторы
- •Операторы присваивания
- •Операции для работы со списками
- •Операторы для работы с файлами
- •Приоритеты выполнения операторов
- •Конструкции языка perl
- •Простые и составные операторы
- •Условные операторы
- •Оператор unless
- •Оператор do
- •Циклы и ветвления
- •Цикл until
- •Циклы for и foreach
- •Оператор безусловного перехода goto
- •Модификаторы операторов
- •Генерация динамических выражений с помощью функции eval
- •Подпрограммы
- •Библиотека подпрограмм
- •Использование пакетов для изоляции подпрограмм
- •Обработка строк
- •Функция chop
- •Функция index
- •Функция length
- •Функция substr
- •Функция join
- •Функция split
- •Функции для обработки списков
- •Функция reverse
- •Функция sort
- •Функции работы с массивами
- •Функции push и pop
- •Функция shift
- •Функция unshift
- •Функция splice
- •Функция scalar
- •Функция grep
- •Функции обработки ассоциативных массивов
- •Функция keys
- •Функция values
- •Функция each
- •Функция delete
- •Аргументы командной строки
- •Доступ к переменным окружения
- •Файловый ввод и вывод
- •Открытие файлов и других потоков
- •Построчное чтение и запись данных
- •Чтение и запись блоков данных
- •Обработка бинарных данных
- •Хранение бинарных данных
- •Распаковка строк бинарных данных в переменные языка perl
- •Упаковка данных в бинарные строки
- •Работа с каталогами
- •Открытие, чтение и закрытие каталогов
- •Форматированный вывод
- •Использование функции print
- •Форматированный вывод данных функцией printf
- •Вызов внешних программ из скрипта на языке perl
- •Регулярные выражения
- •Обзор регулярных выражений
- •Синтаксис регулярных выражений
- •Использование регулярных выражений для поиска по ключевымсловам
- •Использование регулярных выражений для анализа входных данных
- •Регулярные выражения для поиска и замены строк
- •Создание скриптов cgi с помощью perl
- •Вызов cgi-скрипта
- •Вызов сgi-скрипта в системе unix
- •Вызов скрипта на языке perl из dos и windows
- •Создание текста и html-документа с использованием языка perl
- •Добавление в документ динамических свойств
- •Доступ к строке запросов
- •Декодирование html-форм с помощью метода post
Вызов cgi-скрипта
На UNIX-системах программисты могут исполнять скрипты, написанные на языке Perl, как выполнимые файлы. Иными словами, дляних нет необходимости делать что-то специальное для вызова скрипта. На системах, основанных на DOS или Windows, некоторые серверы не исполняют скрипты Perl автоматически. В этом случае вампридется писать пакетный файл, который вызывает команды Perl длязапуска скрипта. Для некоторых систем придется подробнее познакомиться (. документацией по вашему НТTР-серверу относительно запуска скриптов Perl. Большинство серверов HTTP предполагает, чтоскрипты CGI находятся в каталоге под названием cgi-bin. В этомслучае можно вызвать скрипт с помощью URL, подобно следующему:
http://your-domain/cgi-bin/your-script
Примечание: В URL задан каталог cgi-bin, но в действительностискрипт может находиться где угодно в системе. Вы должны определить его расположение при установке сервера HTTP.
Вызов сgi-скрипта в системе unix
Если вы поместили ваш скрипт в каталог cgi-bin и сделали его выполнимым, то пользователь может вызвать скрипт, непосредственно используя URL. Однако необходимо выполнить несколько шагов. Впервую очередь, в начало скрипта необходимо поместить строку, которая идентифицирует файл как программу на языке Perl:
#!/usr/bin/perl
Примечание: Вы должны будете указать в этой строке путь, зависящий от того, где установлен Perl на вашей системе.
Далее необходимо сделать скрипт выполнимым, используя командуchmod:
chmod +x your-srcipt
Вызов скрипта на языке perl из dos и windows
В DOS или Windows скрипты Perl сами по себе не являются выполнимыми самостоятельными программами. Вместо этого необходимозапустить исполнимую программу PERL.EXE, включая имя скрипта наязыке Perl в командной строке. Для упрощения этого процесса можно создать ВАТ-файл для каждого вашего скрипта, который запускает PERL. ЕХЕ с соответствующим файлом, содержащим скрипт. Например, предположим, что ваш ВАТ-файл HELLO.ВАТ содержит следующие команды:
@echo off
perl Hello.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
Также предположим, что скрипт Perl Hello.PL содержит следующие инструкции:
print "Hello, args are '@ARGV'\n";
Как можно видеть, ВАТ-файл просто запускает программуPERL.EXE с указанием скрипта Hello.PL в качестве входной командной строки. Если вы запустите скрипт на языке Perl из Web-сервера, то обнаружите, что большинство HTTP-серверов распознаютскрипты на языке Perl (например, как это делает FolkWeb- сервер),так что нет необходимости в использовании ВАТ-файла. Иными словами, если вы используете HTTP-сервер наподобие FolkWeb, вам нетнадобности делать что-то специальное для вызова CGI-скрипта наязыке Perl. В противном случае может потребоваться создатьВАТ-файл. Если ваша программа-сервер нуждается в ВАТ-файле для выполнения скрипта на языке Perl, вы должны поместить ВАТ-файл (такойкак HELLO.ВАТ) в каталог cgi-bin и туда же - скрипт Perl(Hello.PL).
Создание текста и html-документа с использованием языка perl
Создание текстовых документов с использованием языка Perlпредставляет собой тривиальную задачу. Вам только необходимоудостовериться, что вы поместили правильный НТМL заголовок в начале текстового документа. Например, следующий скрипт создаетпростой текстовый документ, содержащий сообщение Hello, world:
print "Content-type: text/plain\n\n";
print "Hello, world\n";
Создание текстовых документов HTML также очень легко. Например, в следующем фрагменте текста создается простой документ HTML:
print <<HTML;
Content-type: text/html
<HTML>
<HEAD><TITLE>Test Using HTML</TITLE></HEAD>
<BODY>
<H1><CENTER>
Hello, world
</CENTER></H1>
</BODY></HTML>
HTML
Эти примеры больше походят на исходные коды HTML, чем напрограмму на языке Perl. Действительно, если вы удалите несколько строк, вы будете иметь HTML-файл. Эта иллюстративная программа использует свойства языка Perl, которые не были рассмотрены в предыдущей главе, но они достаточно просты для понимания. Строка <<HTML и последняя строка с символами HTML представляют собой конструкцию, называемую <здесь-документ> (heredocument), которая перешла сюда из терминологии программированияshell для UNIX. <Здесьдокумент> представляет собой просто несколько строк литералов. Perl обрабатывает <здесь-документ> какстроку в двойных кавычках. Поскольку <здесь-документ> делает исходный код на языке Perl легким для чтения, то использование такой конструкции является идеальным для создания HTML-документов.Используя конструкцию <здесь-документ>, скрипт на языке Perl может не иметь символов цитирования и символов новой строки, и недолжен содержать функций printf. Конструкция <здесь-документ> широко используется в рассматриваемых далее в этой главе примерах.