Perl скрипты для windows

Perl скрипты для windows

Perl является интерпретируемым языком, созданным программистом Лари Уоллом (Larry Wall) для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl вы, например, можете создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты.

С изобретением World Wide Web, Perl оказался прекрасным средством для взаимодействия с web-серверами через Common Gateway Interface (CGI) — общий интерфейс взаимодействия. Команды Perl могут легко получить данные из формы HTML или другого источника и что-нибудь с ними сделать.

Как Perl обрабатывает данные из форм

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

  • добавить их в текстовый файл,
  • ввести их в базу данных,
  • вставить их в электронное письмо,
  • добавить их в существующую web-страницу,
  • создать новую web-страницу,
  • отобразить их в окне браузера.

Некоторые из этих примеров рассматриваются в нашем уроке.

Как генерируются web-страницы «на лету»

Больше всего впечатляет то, что Perl может быть использован для создания web-страниц «на лету» в ответ на запрос или действие пользователя. Новая страница может быть

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

Эта возможность обеспечивает истинную интерактивность вашего узла. Такие скрипты позволят web-серверу автоматически реагировать на определенный набор запросов пользователя, предоставляя данные в требуемом пользователем виде.

В чем различие между программой и скриптом?

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

За счет того, что скрипты значительно короче программ, они выполняются тоже достаточно быстро.

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

Альтернативы Perl

Существует несколько альтернатив использованию Perl:

  • С, Visual Basic — более традиционные компьютерные языки для обработки вводимых данных. Должны компилироваться под определенную платформу.
  • ActiveX — включение программных компонент, выполняющихся в браузере.
  • JavaScript, VBScript — обеспечивают некоторую интерактивность HTML страниц, которую HTML обеспечить не может.
  • Cold Fusion — сторонняя программа для связи форм с базами данных.
  • PHP/FI — еще одна сторонняя программа для связи форм с базами данных.

Несмотря на это Perl на сегодняшний день является наиболее простым и быстрым и в тоже время очень мощным средством придания интерактивности вашему узлу.

Что вам требуется, чтобы запустить Perl

Для запуска Perl вашей системе понадобится несколько компонент:

  1. Скрипт, написанный вами или предложенный вам другим, сохраненный в текстовом файле.
  2. Perl интерпретатор. Любой Perl скрипт в первой строке содержит путь к этой программе.
  3. Web-страница с которой будет запускаться этот скрипт. Она может содержать форму или просто ссылку, если скрипт не требует входных данных.
  4. Web-сервер. Взаимодействие между web-страницей и скриптом производится сервером. Поэтому вы должны иметь доступ к web-серверу с возможностью записи и запуска на нем скриптов.
Читайте также:  Как настроить tor для linux

Где взять Perl

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

  • Общая информация о Perl — http://www.perl.com/perl/index.html
  • Perl для UNIX — http://www.perl.com/perl/info/software.html
  • Perl для Win32 — http://ntperl.hip.com

Этапы создания скрипта

После того, как вы установили на своем компьютере необходимое ПО, нужно совершить несколько шагов для запуска Perl на вашем узле:

  1. Создать форму для вызова скрипта.
  2. Создать сам скрипт.
  3. Отладить скрипт. Проверить отсутствие ошибок (если это возможно, лучше проверить все возможные пути выполнения программы).
  4. Поместить скрипт на сервер и не забыть дать ему права на выполнение.
  5. Связать скрипт с формой, вставив его имя в параметр action тэга form. Например:

Сохраните файл на диске.

Шаг 2 — Создание скрипта

Предложенный ниже скрипт берет введенные данные, сохраняет их в файле и показывает сообщение, содержащее ссылку на файл с сохраненным именем. Наберите в редакторе текст программы и сохраните в файле testform.pl в каталоге cgi-bin вашего web-сервера. Убедитесь, что первая строка программы содержит правильный путь к программе-интерпретатору (для определения местоположения программы на UNIX воспользуйтесь командой which perl, под Windows выполните поиск файла perl.exe). Убедитесь также, что путь к выходному файлу является корректным путем к области хранения документов web-сервера. В заключение исправьте URL на адрес вашего сервера.

Шаг 3 — Тестирование скрипта

Проверив скрипт визуально на наличие ошибок — отсутствие «;» в конце строк, наличие непарных скобок и кавычек и т.п., запустите скрипт для проверки прямо из командной строки, перейдя предварительно в каталог cgi-bin. Вот некоторые примеры того, как это делается:

Если в скрипте содержатся ошибки, то вы увидите сообщение типа

В этом случае проверьте текст около указанной строки. Помните, что причина ошибки может быть выше на несколько, иногда достаточно много строк. Исправленный скрипт сохраните, и тестируйте так до тех пор, пока он не выдаст корректных выходных данных:

Шаг 4 — Тестирование скрипта с формой

Если скрипт работает сам по себе, вы можете оттестировать его с формой:

  1. Убедитесь, что web-сервер запущен.
  2. Запустите ваш браузер.
  3. Наберите URL по которому находится ваша форма (обратите внимание, что строка должна начинаться с http://, а не с file://.
  4. Введите ваше имя в поле формы и нажмите кнопку «Зарегистрировать».
  5. Вы должны увидеть сообщение вроде этого:

Спасибо, что заполнили форму
Нажмите сюда, чтобы увидеть Ваш ввод.

Это и есть страница, сгенерированная скриптом «на лету». Если вы получили сообщение об ошибке сервера, проверьте правильность расположения скрипта и правильность значения параметра action в тэге form.

  1. Если вы видите правильно сгенерированную страницу, нажмите на ссылку. Вы должны будете увидеть новую страницу, созданную скриптом примерно в таком виде:

Если вы не видите этого, проверьте правильность пути в переменной $targetfile и правильность URL в предпоследней строке скрипта. В противном случае форма и скрипт правильно работают вместе. Вы успешно создали первое web-приложение.

Далее мы рассмотрим четыре части созданного нами скрипта более внимательно.

Обсуждение: Настройка скрипта

Как уже было сказано, первая часть скрипта содержит настройки, включающие в себя несколько элементов. Первая строка определяет путь к программе-интерпретатору:
#!/usr/local/bin/perl для UNIX
или
\Program Files\Perl5\perl.exe для Win32

Также в начале скрипта вы, для удобства, можете разместить комментарий о том, для чего предназначен этот скрипт.

Комментарии могут располагаться в любом месте программы и начинаются с символа #:
или

Также хорошей манерой является определение в начале скрипта всех констант и глобальных переменных. (Советую все пути прописывать в виде переменных, особенно если программа содержит более 50 строк, для удобства изменения местоположения файлов). Например:

Все обычные переменные в Perl начинаются с символа $. Существует много других видов переменных, таких как массивы и т.п.

Все строки программы кроме первой и комментариев должны заканчиваться на «;».

Обсуждение: Чтение данных из формы

Теперь необходимо «считать» введенные пользователем данные в переменные Perl. После того как пользователь нажмет кнопку Submit в форме браузер посылает серверу имя скрипта и данные, взятые из формы. Данные передаются скрипту на стандартный вход.

Читайте также:  Windows 10 check upgrade

Предположим, что форма содержит следующие поля:

Имя поля в форме

Имя, определенное параметром name=»xxx» в тэге поля

Данные пользователя

user_name

Andy Novikov

Компания:

TeleSputnik

(812) 123-45-67

В этом случае данные будут посланы скрипту в следующем формате:
user_name=Andy+Novikov&co_name=TeleSputnik&phone=(812)+123-45-67

Perl скрипт должен разобрать эту строку по частям и сохранить в переменных для дальнейшей обработки. Строки, производящие эти действия достаточно стандартны:

Эта строка читает данные со стандартного входа и помещает их в переменную $buffer. Длина строки передается скрипту через переменную окружения CONTENT_LENGTH.

Как только данные помещены в переменную $buffer вы можете разбить их на отдельные переменные с соответствующими им значениями:

Теперь мы получили массив @pairs со следующими строковыми переменными:
[1] user_name=Andy+Novikov
[2] co_name=TeleSputnik
[3] phone=(812)+123-45-67

Теперь нам необходимо разбить эти строки на пары параметр-значение:

Таким образом вы получаете массив переменных, индексом в котором является значение параметра name поля формы, а значением — данные, введенные в соответствующее поле.

Обсуждение: Что делать с данными?

Следующим шагом является обработка данных. Но как? Все зависит от того, что вы хотите сделать с данными. В нашем примере мы на основе полученных данных создаем новый HTML документ. Нише мы рассмотрим несколько простых примеров того, что можно сделать с полученными данными. Обратите внимание, что мы не предпринимаем попыток проверить правильность (validate) содержимого полей. Хотя в реальных скриптах это является желательным, а иногда и необходимым действием.

Обсуждение: Запись в файлы

Одно из действий, которое вы можете совершить над данными, это записать их в файл. Perl предоставляет набор функций для открытия, обработки и закрытия файлов. Таким образом вы можете создать новый HTML документ, добавить данные в уже существующий HTML документ или сохранить данные в текстовом файле для дальнейшей обработки.

Функция открытия файла выглядит следующим образом:

HANDLE является любым временным именем, который вы будете использовать как идентификатор файла при проведении операций. Как только файл открыт, вы можете писать в него, используя функцию print:

После завершения операций с файлом необходимо его закрыть:

После этого все записанные данные будут сохранены на диск.

Перед осуществлением запись в файл, вы должны убедиться, что web-сервер имеет доступ к директории, в которой находится файл и имеет права на запись в этот файл.

Обратите внимание: функция close должна располагаться как можно ближе к последней функции записи в файл. Это обусловлено тем, что web-сервер выполняется в многопользовательской среде, и скрипт может запускаться одновременно несколькими пользователями. При открытии файла на запись он (файл) блокируется и другие экземпляры скрипта не смогут его открыть, что вызовет задержку в выполнении запроса.

Пример: Создание новой HTML страницы

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

В связи с тем, что мы создаем web-страницу файл содержит тэги HTML вместе с обычным текстом. Помните, что \n просто вставляет перевод строки в текст для удобства последующего просмотра созданного файла.

Все входные данные из формы содержатся в переменных $input. При печати такие переменные должны выноситься за кавычки и отделяться запятыми.

Пример: Добавление в конец файла

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

Пример: Добавление в середину существующего файла

Более сложной задачей является вставка новых данных в середину файла. Обратите внимание, что в первом примере мы вставили в файл линию комментария, выглядящую следующим образом:

Этот комментарий будет служить нам меткой места, в которое нужно вставлять новые данные. Данный пример содержит не совсем изящное решение, но прост в реализации и понимании. Он использует временный файл, хотя можно обойтись и без него:

Пример: Отправка данных по e-mail

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

Для этого вам потребуется программа посылки почты с интерфейсом командной строки. Под UNIX это может быть sendmail или mail. В данном примере данные посылаются с помощью программы sendmail. Вместо записи в файл мы используем запись в специально открытый канал (pipe):

Обсуждение: Создание web-страниц «на лету»

Последней важной частью Perl скрипта является посылка результата обратно пользователю. Это достигается тем же print, но без идентификатора файла или канала. Все, что печатается на стандартный выход формирует текущий документ в окне браузера. Например:

Обратите внимание на первую строку. Эта строка содержит информацию о типе возвращаемых данных. Двойной перевод стоки при этом обязателен. Эта страница будет возвращена пользователю почти сразу после нажатия им кнопки Submit.

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

Установка Perl под Windows

Где найти и скачать Perl

В настоящее время варианты PERL (так называемые «порты» (ports) ) существуют для многих разных машин и операционных систем, в том числе и для Windows 9x, и Windows NT. Искать их надо в первую очередь на сайте CPAN (Comprehensive Perl Archive Network) — www.cpan.org. Там же можно найти многочисленные модули, программы, документацию и другие материалы, отосящиеся к Perl. Порты perl для разных платформ находятся в разделе Browsing -> Perl binary distributions («ports»)

Для Windows платформ существуют две основных «линии» Perl — так сказать, «классическая» и от фирмы ActiveState (www.activestate.com). Фирма ActiveState выпускает «свои» порты Perl для Win32, средства для запуска Perl как ISAPI extension (ISAPI — это интерфейс серверных расширений веб-серверов Microsoft — PWS и IIS) и различные утилиты разработчика. Последние уже продаются за деньги (на сайте — демо-версии), в то время как PERL можно скачать и использовать бесплатно.

Существуют и другие, менее известные порты PERL для Win32.

Для работы нужен perl версии 5 или выше. Лично я уже 2 года пользуюсь Perl 5.003_07 от ActiveState. Узнать версию интерпретатора можно командой perl -v.

Установка Perl

Процесс установки Perl из дистрибутива не представляет собой ничего сложного. Программа установки создаст папку для Perl и подпапки в ней, разместит необходимые файлы, а также пропишет путь к файлу perl.exe в autoexec.bat, а также необходимые ключи реестра. Теперь Вы можете запустить Perl-скрипт, просто введя в командной строке:
perl .

Сразу после установки Perl Вы не сможете запускать CGI-скрипты через Ваш веб-сервер. Для того, чтобы это было возможно, надо «прописать» perl в установках веб-сервера как «script handler» (программа, поддержи- вающая скрипты). Как? Это зависит от веб-сервера.

Вообще, существует 2 типа CGI-скриптов: «бинарные» (откомпилированные в исполняемый код программы) и «интерпретируемые» — к которым относятся и Perl-скрипты. Важное отличие между ними заключается в том, что вторым нужен так называемый «script handler»-программа-интерпретатор, исполняющая скрипт. Для web-сервера perl.exe и является тем самым «script handler»-ом.

В большинстве web-серверов для Windows (включая ее «родные» PWS и IIS) «бинарные» CGI-скрипты поддерживаются автоматически. Принадлежность же интерпретируемых скриптов к определенному handler-у определяется расширением файла (исключение — в некоторых «изначально UNIX-овских» web-серверах, например Apache, handler определяется первой строчкой скрипта, начинающейся с «#!»).

Установка поддержки Perl-скриптов в PWS и IIS

Нижеследующие рекомендации по установке Perl для IIS/PWS были опробованы на PWS в составе Windows95 OSR2.

В PWS и IIS данные о расширениях скриптов находятся в системном реестре Windows в разделе
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesw3svcparametersScript Map

В частности, если Вы хотите, чтобы файлы с расширениями cgi и pl запускались как Perl-скрипты, Вам надо прописать следующие параметры в вышеуказанный раздел:

Если у Вас perl.exe установлен в каталог C:Perlbin, то эти параметры будут иметь вид:

В тех папках web-сервера, где планируется размещать Perl-скрипты, должно быть разрешение на их исполнение (в PWS это настраивается через веб-интерфейс).

Читайте также:  Репликация dns windows server 2012
Оцените статью