
- •Язык программирования 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
Frontend-программы для связи с базой данных
Утилита типа frontend для базы данных представляет собойпрограмму, которая упрощает доступ к серверу базы данных для остальных программ. Такая программа обрабатывает запрос пользователя к базе данных и на этой основе формирует свой запрос к базе данных с параметрами, необходимыми для доступа к данным на сервере. Frontend-программа может также обрабатывать результаты запроса, формировать ответ и посылать его обратно пользователю. Как выузнаете, программисты создают простые приложения для баз данныхисключительно на языке Perl, причем не возникает необходимости вспециальном сервере базы данных. Perl имеет встроенные возможности для отображения ассоциативных массивов (обсуждаемых дальше вэтой главе) на файл базы данных. В результате доступ к файлу базы данных в рамках скрипта Perl так же прост как и доступ к элементам массива, поскольку ввод/вывод в файл является прозрачнымдля скрипта. Для более сложных приложений на основе баз данныхPerl может выполнять роль связующего звена с сервером базы данных и функционировать как Frontendпрограмма для базы данных. Несколько специальных версий языка Perl было создано для расширенияподдержки конкретных серверов баз данных. Например, oraperl обеспечивает возможность доступа к серверам баз данных Oracle.
Использование языка perl для написания cgicкриптов.
Как вы узнали из предыдущей главы, CGI обеспечивает узламWeb вoзмoжнoсть интерактивной работы с клиентскими программами, вкачестве которых обычно выступает броузер. Во многих случаях узлы используют скрипты CGI для доступа к базам данных в тех случаях, когда клиент и сервер должны обмениваться данными.Использование CGI позволяет пользователю получать доступ к базеданных на Web, используя обычный Web-броузер. CGI-скрипт читает иобрабатывает содержание НТМL-форм, устанавливает соединение с базой данных, посылает ей запросы, обрабатывает результаты ответов,формируя на их основе новый НТМД документ, и затем посылает егообратно пользователю. Кроме того, все эти шаги должны быть сделаны так, чтобы обеспечить безопасность сервера.
Знакомство с языком perl
Хочется верить, что вас удалось убедить в необходимости хотя бы рассмотреть использование языка Perl для написания скриптов CGI. В следующих разделах вы узнаете, как запускать Perl наисполнение и как создавать полезные скрипты на языке Perl. Благодаря сходству Perl и С, в этой главе мы сосредоточим внимание натом, что объединяет их, и на их различиях. Больше внимания в главе будет уделено различию между этими языками.
<HELLO WORLD> НА ЯЗЫКЕ PERL
Большинство учебников по языкам программирования начинаетсяс простейшей программы, которая выводит текст <Hello World>. Всоответствии с этой традицией мы приводим нашей книге несколькопримеров программ <Hello World>. Следующий код служит для выводана экран сообщения <Hello World> три раза, используя три различных способа:
# Три способа как сказать <Hello World>
printf("Hello world\n");
printf("%s\n",'Hello world');
print "Hello World", "\n"
Первая строка представляет собой комментарий. На языке Perlзнак диез (#) означает комментарий. Когда Perl находит этот знак,он игнорирует весь текст, начиная с него и до конца строки. Знакдиез служит единственным способом ввести комментарии на языкеPerl. В отличие от С здесь нет конструкции, которая сразу бы определяла несколько строк комментариев. На первый взгляд функцияprintf выглядит так же, как в языке С. Однако вы можете заметить,что программа не содержит функции main. Хотя скрипты поддерживают подпрограммы (аналогичные функциям С), скрипт не определяетраздела, который бы содержал тело функции main. Вместо этого интерпретатор Perl сразу начинает исполнение скрипта с первого выражения в файле. Второе выражение, содержащее функцию printf,опять-таки выглядит аналогично своему использованию в языке С, заисключением того, что вторая строка аргументов заключена в одинарные кавычки ('') в противоположность двойным (""), используемым в С. В языке Perl строка в двойных кавычках означает определенный род преобразования. Например, интерпретатор Perl преобразует выражение новой строки в двойных кавычках "\n" в символ новой строки. Скрипт Perl использует одинарные кавычки для включения строковых литералов, т. е. строковых выражений, как это написано выше. Например, Perl напечатает выражение в одинарных кавычках ('\n') как два знака ('\') и 'n', а не как знак перехода нановую строку. Наконец, последняя строка кода программы содержитфункцию print, которой нет в языке С. В этом случае наиболее полезная черта этой функции заключается в отсутствии скобок. Оказывается, что вы можете всегда включать скобки в состав функцииязыка Per]. Однако в большинстве случаев необходимости в них нет.Perl требует включения скобок только в том случае, если без нихвыражение оказывается не полностью определенным, двусмысленным.Тем не менее, включение скобок в код соответствует хорошей традиции, и вам не следует отказываться от нее.