Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Основные части Perl скрипта




В общем случае любой Perl скрипт состоит из четырех ключевых частей:

1. Настройка. Первая часть скрипта обязательно запускает интерпретатор и устанавливает переменные, используемые в теле скрипта. Для запуска интерпретатора необходимо знать правильный путь к программе.

2. Чтение входных данных. Эта часть "считывает" и сохраняет в переменных входные данные в удобной для обработки форме. Эта часть обычно неизменна во всех скриптах.

3. Обработка входных данных. Эта часть соответствующим образом обрабатывает введенные данные. Она может быть простой (около 5 строк) или очень сложной (более 1000 строк) в зависимости от выполняемой задачи.

4. Вывод результатов. Пользователь обычно ожидает какого-либо ответа на свои действия. Эта часть достаточно проста в реализации.

Процесс установки Perl из дистрибутива не представляет собой ничего сложного. Программа установки создаст папку для Perl и подпапки в ней, разместит необходимые файлы, а также пропишет путь к файлу perl.exe в autoexec.bat. Теперь Вы можете запустить Perl-скрипт, просто введя в командной строке: perl <путь_к_скрипту designtimesp=30870>. Сразу после установки Perl Вы не сможете запускать CGI-скрипты через Ваш веб-сервер. Для того, чтобы это было возможно, надо "прописать" perl в установках веб-сервера как "script handler" (программа, поддерживающая скрипты). Как? Это зависит от веб-сервера. Вообще, существует два типа CGI-скриптов: "бинарные" (откомпилированные в исполняемый код программы) и "интерпретируемые" - к которым относятся и Perl-скрипты. Важное отличие между ними заключается в том, что вторым нужен так называемый "script handler"-программа-интерпретатор, исполняющая скрипт. Для web-сервера perl.exe и является тем самым "script handler"-ом. В большинстве web-серверов для Windows (включая ее "родные" PWS - Personal Windows Server и IIS – Internet Information Server) "бинарные" CGI-скрипты поддерживаются автоматически. Принадлежность же интерпретируемых скриптов к определенному handler-у определяется расширением файла (исключение - в некоторых "изначально UNIX-овских" web-серверах, например Apache, handler определяется первой строчкой скрипта, начинающейся с "#!").

В частности, если Вы используете PWS, и хотите, чтобы файлы с расширениями cgi и pl запускались как Perl-скрипты, Вам надо прописать в ключ реестра KEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\w3svc\parameters\Script Map следующие строковые параметры: ".cgi"="(путь_к_Perl.exe) %s %s" ".pl"="(путь_к_Perl.exe) %s %s" Если у Вас perl.exe установлен в каталог C:\Perl\bin\, то эти параметры будут иметь вид:".cgi"="C:\Perl\bin\perl.exe %s %s" ".pl"="C:\Perl\bin\perl.exe %s %s" В тех папках web-сервера, где планируется размещать Perl-скрипты, должно быть разрешение на их исполнение (в PWS это настраивается через веб-интерфейс). Запуск обычных (не CGI) Perl-программ можно значительно облегчить, сделав его возможным стандартным для Windows способом - двойным щелчком на значке программы. Для обычных Perl-программ используют расширение.pl, чтобы не путать их с cgi-скриптами, обычное расширение у которых.cgi

Теперь настало время попробовать работать с языком 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"

\n - это переход на новую строку (newline) информации на экране, т.е. если бы Вы продолжили бы текст, заключенный в кавычки, то после этого символа он был бы напечатан с новой строки. В этом случае первая строка указывает системе, что необходимо запустить скрипт, используя Perl. Можно видеть, что эта строка является комментарием и это не случайно, так что Perl, проигнорирует ее. Тем не менее, большинство UNIX командных скриптов shell просмотрят два первых символа в любом исполняемом скрипте. Если первыми символами служат #!, то shell будет использовать остаток строки в качестве команды для запуска скрипта. В данном случае такой командой является /usr/bin/perl. Shell передаст имя скрипта Perl автоматически. Для того чтобы запустить скрипт, необходимо запустить команду chmod для того, чтобы указать скрипту на файл, который необходимо выполнить (например, chmod + хhello.pl). В зависимости от программы shell, также может потребоваться набрать команду rehash для того, чтобы указать программе shell, что Вы добавили новую команду. Возможно, также потребуется модифицировать путь к Perl, если он не инсталлирован в подкаталоге /usr/bin Вашей системы.

Заключение

Популярность Perl возрастает до сих пор, и он стал излюбленным средством многих программных пакетов. Будучи мощным средством для обработки текстов, Perl имеет огромные возможности для прикладного программирования. Он имеет множество библиотек для работы с множеством бинарных файлов, шифрования, сжатия, и обработки изображений. Comprehensive Perl Archive Network (CPAN) содержит тысячи легко загружаемых модулей, которые могут делать все от создания сетевых приложений до разбора документов Microsoft Excel. Perl был создан так, чтобы он мог работать на множестве аппаратных платформ и операционных систем, что позволяет одному и тому же коду быть написанным однажды и использоваться на любой системе.

29 июля 2010 вышел в свет первый релиз компилятора Perl 6 Rakudo Star - это отдельный дистрибутив Rakudo, который помимо компилятора включает в себя еще несколько компонент, в частности, набор полезных модулей и инструментов для работы с внешними библиотеками. В состав Rakudo Star входят:

  • компилятор Rakudo, релиз 31;
  • виртуальная машина Parrot, версия 2.6.0;
  • набор модулей и инструментов;
  • документация;
  • черновик книги про Perl 6 (на английском языке).

Планируется ежемесячное обновление этого комплекта. Среди включенного в релиз:

  • Blizkost — библиотека для использования модулей Perl 5 в программах на Perl 6;
  • MiniDBI — простой интерфейс к базам данных;
  • Zavolaj — библиотека для вызова функций из C-библиотек;
  • SVG and SVG::Plot — модули для создания векторной графики;
  • HTTP::Daemon — простой HTTP-сервер;
  • XML::Writer — модуль для генерации XML;
  • YAML — модуль для печати объектов Perl 6 в виде YAML;
  • Term::ANSIColor — модуль для работы с терминалом;
  • Test::Mock — модуль, облегчающий тестирование с так называемыми мок-объектами (объектами-заглушками);
  • Math::Model — модуль для описания и запуска математических моделей;
  • Config::INI — парсер конфигурационных файлов;
  • File::Find — модуль для поиска файлов;
  • LWP::Simple — модуль для загрузки документов по сети.

Важно отметить, что с приходом Perl 6 сразу же встает вопрос о том, что модули, созданные на Perl 5, без существенных изменений их кода работать не смогут. Поэтому в этом списке фигурируют модули, одноименные существующим и доступными на CPAN, но переписанными на Perl 6. Во многих случаях это способствует улучшению кода модулей. Там, где требуется воспользоваться старыми модулями, предлагается обратиться к библиотекам Blizkost и Zavolaj.

В Perl 6 появились не только новые регулярные выражения, но и более мощный встроенный в язык инструмент — грамматики.

Регулярные выражения Perl 6 официально называются регексами (regex) — теперь это не разговорное сокращение, а полное название. В контексте грамматик более употребительными окажутся термины правило и токен.

Здесь речь будет идти о том, как создать простую грамматику для обработки запросов типа «20 EUR in USD». Регексы, которые потребуется по ходу дела, будут прокомментированы по ходу же дела.

Грамматики Perl 6 можно рассматривать как классы, члены и методы которых являются не функциями, а правилами и токенами, внутри которых записаны регексы, которые, собственно, и будут в нужном порядке применяться к исходным данным.

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

Второй момент — результат сопоставления строки с регексом (или разбор в соответствии с грамматикой) всегда возвращает объект типа Match, обычно доступный в переменной $/.

С начала дадим описания грамматики. Синтаксис грамматики похож на тот, что используется для создания классов, однако требует ключевого слова grammar, за которым следуют название и блок с определением: grammar ExampleGrammar {...}

Внутри блока находятся несколько вложенных блоков, предваренных ключевыми словами rule и token. По сути, это именованные регулярные выражения, которые и составляют грамматику.

Отличия между rule и token только в том, что для токенов не действует откат. То есть токен должен совпасть максимально длинно, и если он захватил символы до полного совпадения, то попытки переосмыслить часть совпавших символов не произойдет. Кроме того, в пределах правила и токена по-разному обрабатываются пробелы на входе — токен должен быть единой последовательностью, в точности описанной в грамматике, в правиле же допускаются пробелы между его частями.

Первое правило, которое стоит в начале процесса разбора, должно называться TOP.

Rule TOP {...}

Внутри фигурных скобок — регекс, в котором, помимо метасимволов в угловых скобках, упоминаются другие правила.

Метасимволы ^ и $ привязывают правило, соответственно, к началу и концу строки. Перевод строки, если он был, совпадет с $. А если не было, $ все равно успешно совпадет с концом строки.

Имена в угловых скобках — токены, которые определены далее в грамматике. После каждого из них в правиле TOP стоят метасимволы, определяющие, сколько раз токены могут встретиться. Токен sign (после которого стоит?) должен совпасть либо один раз, либо отсутствовать в строке. Токен digit (после него стоит +) может многократно повторяться, но обязан присутствовать хотя бы один раз.

Токен sign описывает, какие символы могут быть использованы для обозначения знака числа. Соответствующие символы записаны через разделитель |, который предназначен для описания альтернативных вариантов. Обратите внимание, что и плюс, и минус взяты в кавычки ровно по той причине, что без них они становятся метасимволами, поскольку не являются ни буквами, ни цифрами, ни символом подчеркивания.

Наконец, токен digit описывает, что такое цифра. В нашем определении цифра — символ из класса <[0..9]>. Синтаксис для записи символьных классов — квадратные скобки внутри угловых (а угловые скобки, как видно из предыдущих примеров, используются для того, чтобы упомянуть одно правило внутри другого). Синтаксис для диапазона символов (две точки) совпадает с тем, что используется в самом Perl 6.

Итак, тестовая грамматика описывает строки, в которых записаны целые числа со знаком или без. В начале строки может стоять необязательный знак, за которым следуют одна или несколько цифр.

Оставшаяся часть программы организует бесконечный цикл, в котором запрашивается строка и делается попытка разобрать ее с помощью грамматики.

Цикл while выполняет блок кода до тех пор, пока истинно его условие (в Perl 6 скобки для условия не нужны, хотя по-прежнему нужны для блока кода). В нашем случае условие содержит и объявление переменной my $string, и вызов функции prompt('> ').

Функция prompt выводит на печать свой аргумент — строку '> ' — и ожидает, пока пользователь не введет строку и нажмет Enter. Полученный текст попадает в скаляр $string.

Далее строка передается методу.parse тестовой грамматики, и результат разбора проверяется в условии if (скобки для условия не нужны и здесь).






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных