
- •Язык программирования 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 на вашей системе, тонеобходимо сделать это. Обратитесь к файлу Perl.txt на CD-ROM,который входит в комплект книги. Далее полагаем, что Perl правильно установлен. Наберите команду для запуска скрипта Perl,аналогичную следующей:
C:\PERL>perl script-name <ENTER>
Например, создайте файл с именем hello.pl, содержащий показанную ниже строку:
Print "Hello world\n"
Далее в командной строке наберите следующую команду:
C:\PERL>perl hello.pl <ENTER>
На экране вы увидите следующий текст:
Hello World
Как уже говорилось, если вы используете UNIX-систему, томожно вызвать скрипт Perl таким же образом, как другую самостоятельную программу. Для того чтобы начать, отредактируйте файлтак, чтобы первая строка была аналогична представленной ниже:
#!/usr/bin/perl
print "Hello world\n"
В этом случае первая строка указывает системе, что необходимо запустить скрипт, используя Perl. Можно видеть, что эта стро-ка является комментарием и это не случайно, так что Perl, проигнорирует ее. Тем не менее, большинство UNIX командных скриптовshell просмотрят два первых символа в любом исполняемом скрипте.Если первыми символами служат #!, то shell будет использовать остаток строки в качестве команды для запуска скрипта. В данномслучае такой командой является /usr/bin/perl. Shell пересдаст имяскрипта Perl автоматически. Для того чтобы запустить скрипт,необходимо запустить команду chmod для того, чтобы указать скрипту на файл, который необходимо выполнить (например, chmod + хhello.pl). В зависимости от программы shell, также может потребоваться набрать команду rehash для того, чтобы указать программеshell, что вы добавили новую команду. Возможно, также потребуется модифицировать путь к Perl, если он не инсталлирован в подкаталоге /usr/bin вашей системы.
Примечание: Большинство скриптов Perl используют в качестве расширения.р1, но это необязательно. Если вы запускаете скрипт Perlкак отдельную программу, то, возможно, более удобным будет вообще опустить расширение.
Использование отладчика perl
Может показаться преждевременным говорить сейчас об отладчике Perl. Но использование отладчика может оказаться исключительно полезным при изучении языка Perl. С ним вы можете легкоиспытать все программы, которые приведены в этой главе в качестве примеров. Фактически можно внести любое выражение Perl непосредственно в отладчик, используя его в качестве интерактивногоPerl. Таким способом можно ознакомиться со многими возможностямиязыка, что намного проще, чем создавать и запускать полные скрипты. Отладчик Perl встроен в сам Perl. Можно запустить отладчик,используя ключ -d в командной строке следующим образом:
C:\PERL> Perl -d hello.pl <ENTER>
В таком случае Perl загрузит скрипт hello.pl и начнет отладку. Если вы используете UNIX-систему, то можете поместить комментарий #!/usr/bin/perl -d в самом начале скрипта Perl. Если хотите загрузить Perl с отладчиком без загрузки скрипта, то можетеиспользовать следующую команду: С: \> Perl -de 0 <ENTER> В такомслучае аргумент командной строки -d указывает Perl на необходимость вызова отладчика, а аргумент -e 0 заставляет выполнить Perlскрипт, состоящий из 0 строк. Поскольку скрипт 0 не существует,то Perl просто запустит отладчик. Если Perl установлен на вашусистему корректно, то на экране вы увидите следующие данные, которые говорят, что вы находитесь в отладчике:
Loading DB routines from $RCSfile: perldb.pl,v $$Revision: 4.0.1.3
$$Date: 92/06/08 13:43:57 $
Emacs support available.
Enter h for help.
main '(p1000159:1):
DB<1>
Если Perl выводит ответ, но указывает на ошибку, такую какCan't locate perldb.pl @INC, то, значит, Perl установлен в вашейсистеме некорректно. В таком случае прочитайте readme-файлы, которые сопровождают вашу версию Perl. В отладчике можно набратьлюбое выражение Perl, и он немедленно его исполнит. Дополнительно можно использовать следующие команды отладчика: ? h - распечатать в качестве подсказки список команд отладчика ? n - вы-полнять до следующего выражения ? <CR> - повторить последнюю команду n или s ? p выражение - сокращение для команды print выражение ? q - окончить работу ? r - исполнять до выхода из подпрограммы ? s - один шаг по скрипту (со входом в подпрограмму)
Например, следующая команда отладчика использует функциюprint для того, чтобы вывести на экран сообщение Hello World:
DB<1> prinf "Hello World\n"; <ENTER>
Hello World
DB<2>
Используя отладчик с помощью команды р, можно вывести на экран любое выражение. Для упрощения набора в отладчике можно опускать точку с запятой в конце выражения, поскольку отладчик добавит ее для вас. Наконец, отладчик всегда переходит на новую строку для новой команды. Следующий код иллюстрирует использованиекоманды р: <ENTER>
DB<2> р "Hello World\n" <ENTER>
Hello World
DB<3>
Как можно видеть, всякий раз, когда вы набираете команду отладчика, счетчик отладчика увеличивается на единицу, что находитотражение в его строке DB.Читая дальше эту главу, вам, вероятно,стоит запустить отладчик, чтобы иметь возможность набирать в немпримеры и работать с языком Perl интерактивно.
Примечание: Для того, чтобы ввести выражение из многих строк вотладчик (debugger), необходимо использовать символ продолжения<\> конце каждой строки.. Иначе отладчик сообщит о синтаксической ошибке.
Следующая команда иллюстрирует использование символа продолжения при работе с отладчиком:
DB<3> for ($i = 0; $i < 10; $i++) { \ <ENTER>
cont: print $i; \ <ENTER>
cont: } <EIITER>
0123456789
DB<4>
В этом случае для вывода чисел от 0 до 9 использовался циклfor, который будет подробно рассмотрен в этой главе.