
- •Язык программирования 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
Богатство возможностей языка perl
Perl предоставляет разработчику широкий спектр возможностейдля создания кратких и эффективных программ. Ниже приведены некоторые наиболее замечательные черты Perl. Далее в главе вы познакомитесь с использованием каждой из них: ? Ассоциативные массивы,которые индексируются программами с использованием нецелых ключей ? Автоматическое преобразование типов между целыми числами,числами с плавающей точкой и строками ? Автоматическое преобразование размера массивов ? Функции для преобразования бинарных данных ? Широкая поддержка так называемых регулярных выражений, которые программы используют для поиска, замены и других операций,связанных с разбором текста ? Функции вывода/ввода файлов ? Функции форматированного вывода, наподобие функции С, с добавлениемк ним способности генерации отчетов на основе шаблонов (template)? Полный набор.операторов С, с добавлением также операций посравнению строк ? Функции для обработки списков, которые поддерживают стеки, очереди и другие данные списочных типов ? Функциисистемного сервиса ? Богатый набор операторов и структур управления, включая подпрограммы
Использование perl
Чтобы разобраться, как использовать Perl, необходимо проанализировать коды написанные на нем. Самый простой путь познакомиться с языком Perl состоит в изучении коротких примеров. Следующий раздел основан на коротких примерах для того, чтобы ввести вас в курс дела. После того как вы поймете основы техникипрограммирования на языке Perl, вы сможете писать на нем CGIскрипты.
Использование perl как фильтра данных
Средства UNIX-систем в значительной мере основаны на концепции о том, что программа служит фильтром данных, поток которыхпоступает на вход, а отфильтрованные данные - на выход. Таким образом, программа-фильтр отбрасывает нежелательные данные. MS DOSтакже поддерживает концепцию фильтра данных. Утилита grep в среде UNIX представляет собой классический пример фильтра данных.Эта утилита сканирует входной поток данных в поиске строк, которые соответствуют заданному шаблону. Программа направляет на выход те строки, которые соответствуют этому шаблону. Она отфильтровывает, отбрасывает строки, не удовлетворяющие шаблону.Perl идеально подходит для построения фильтров данных. Действительно, вы можете создать простую версию утилиты grep, используяследующий короткий скрипт на языке Perl:
$pattern = shift(@ARGV); # берет командную строку
while (<>)
{ # читать строку из входного потока
print if (/$pattern/); # output line if it matches
}
В этом случае скрипт просто просматривает входные данныестрока за строкой. Если строка содержит текст, определенный первым аргументом командной строки, то программа печатает такуюстроку. Не беспокойтесь, если написанный текст скрипта вам поканепонятен. В этой главе вы найдете описание всех операторов подобного типа программ на языке Perl.
Использование языка perl как шлюза безопасности
Вопросам безопасности придается большое значение как в программировании CGI, так и при решении других задач, связанных спрограммным обеспечением для сетей. Часто бывает необходимо защитить файлы и другие ресурсы системы от угрозы со стороны пользователей, которая может проистекать от их неаккуратности или дажезлого умысла. Это особенно важно для Web-серверов, а также других серверов, таких как FTP-сервер, которые подключены кInternet, где наличие злоумышленных пользователей хорошо известно. Одним из путей защиты системы от атак таких злоумышленниковслужит создание шлюзов безопасности, через которые пропускаютсявходные данные. В этом случае только данные, оцененные шлюзовойпрограммой как безопасные, передаются в систему. Традиционнобольшая часть серверов Internet исполняется под системой UNIX инаписана на языке С. Неверное использование программистами указателей на языке С ведет к нарушению безопасности работы системы.Одним из достоинств Perl, существенным при написании надежныхшлюзовых программ, служит тот факт, что переменные строкового типа изменяют свою длину автоматически в зависимости от потребности. Строковые переменные содержат столько символов, сколько имприсваивает скрипт. Perl не позволяет программе писать данные водну переменную таким образом, чтобы нарушить целостность данныхдругой переменной. Имеется также специальная версия языка Perl,которую называют taintperl, в которой осуществляется проверка зависимостей между данными и предотвращается выполнение системойкоманд по передаче данных серверу от источника, не заслуживающего доверия. Если испорченные или некорректные данные поступают навход программы taintperl, то она помечает все значения команднойстроки, переменных окружения и входные данные как испорченные,предотвращая их дальнейшую передачу серверу и возникновение фатальной ошибки.