введение в perl☛Документация Perl ✎ |
Альтернативы Perl
Существует несколько альтернатив использованию Perl:
С, Visual Basic - более традиционные компьютерные языки для обработки вводимых данных. Должны компилироваться под определенную платформу.
ActiveX - включение программных компонент, выполняющихся в браузере.
JavaScript, VBScript - обеспечивают некоторую интерактивность HTML страниц, которую HTML обеспечить не может.
Cold Fusion - сторонняя программа для связи форм с базами данных.
PHP/FI - еще одна сторонняя программа для связи форм с базами данных.
Несмотря на это Perl на сегодняшний день является наиболее простым и быстрым и в тоже время очень мощным средством придания интерактивности вашему узлу.
Что вам требуется, чтобы запустить Perl
Для запуска Perl вашей системе понадобится несколько компонент:
Скрипт, написанный вами или предложенный вам другим, сохраненный в текстовом файле.
Perl интерпретатор. Любой Perl скрипт в первой строке содержит путь к этой программе.
Web-страница с которой будет запускаться этот скрипт. Она может содержать форму или просто ссылку, если скрипт не требует входных данных.
Web-сервер. Взаимодействие между web-страницей и скриптом производится сервером. Поэтому вы должны иметь доступ к web-серверу с возможностью записи и запуска на нем скриптов.
Где взять 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 на вашем узле:
Создать форму для вызова скрипта.
Создать сам скрипт.
Отладить скрипт. Проверить отсутствие ошибок (если это возможно, лучше проверить все возможные пути выполнения программы).
Поместить скрипт на сервер и не забыть дать ему права на выполнение.
Связать скрипт с формой, вставив его имя в параметр action тэга form. Например:
<form method=post action="/cgi-bin/scriptname.pl">
Убедиться, что скрипт правильно работает вместе с формой.
Основные части Perl скрипта
В общем случае любой Perl скрипт состоит из четырех ключевых частей:
Настойка. Первая часть скрипта обязательно запускает интерпретатор и устанавливает переменный, используемые в теле скрипта. Для запуска интерпретатора необходимо знать правильный путь к программе.
Чтение входных данных. Эта часть "считывает" и сохраняет в переменных входные данные в удобной для обработки форме. Эта часть обычно неизменна во всех скриптах.
Обработка входных данных. Эта часть соответствующим образом обрабатывает введенные данные. Она может быть простой (около 5 строк) или очень сложной (более 1000 строк) в зависимости от выполняемой задачи.
Вывод результатов. Пользователь обычно ожидает какого-либо ответа на свои действия. Эта часть достаточно проста в реализации.
Пример скрипта с формой
Рассмотрим теперь описанные нами шаги на конкретном примере. От вас не требуется понимания каждой строки скрипта, все они будут объяснены ниже.
Шаг 1 - Создание формы
Создадим для простоты форму, содержащую всего одно поле и позволяющую пользователю зарегистрировать его имя. Напишем в редакторе следующий текст:
<html>
<head>
<title>Test Form</title>
</head>
<body>
<form method=post action"cgi-bin/testform.pl">
<b>Введите Ваше имя: </b>
<input name="user_name" value="" size=20>
<input type="submit" value="Зарегистрировать">
</form>
</body>
</html>
Сохраните файл на диске.
Шаг 2 - Создание скрипта
Предложенный ниже скрипт берет введенные данные, сохраняет их в файле и показывает сообщение, содержащее ссылку на файл с сохраненным именем. Наберите в редакторе текст программы и сохраните в файле testform.pl в каталоге cgi-bin вашего web-сервера. Убедитесь, что первая строка программы содержит правильный путь к программе-интерпретатору (для определения местоположения программы на UNIX воспользуйтесь командой which perl, под Windows выполните поиск файла perl.exe). Убедитесь также, что путь к выходному файлу является корректным путем к области хранения документов web-сервера. В заключение исправьте URL на адрес вашего сервера.
#!/usr/local/bin/perl # <-- ПРОВЕРЬТЕ ЭТО
# Read and parse input from the web form
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|n)*-->//g;
$input{$name} = $value;
}
# Save the user output in a file
$targetfile = "/usr/local/www/htdocs/names.html"; # <-- ПРОВЕРЬТЕ ЭТО
open (NAMEFILE, ">>$targetfile");
print NAMEFILE "<h3>Имя: ",$input{'user_name'},"</h3>n";
print NAMEFILE "<p><hr><p>n";
close (NAMEFILE);
# Send a message back to the user
print "Content-Type: text/htmlnn";
print "<h3>Спасибо, что заполнили форму</h3>nНажмите ";
print '<a href="http://server-name/names.html">сюда</a>'; # <-- ЗАМЕНИТЕ ЭТО
print ", чтобы увидеть Ваш ввод.n";
Шаг 3 - Тестирование скрипта
Проверив скрипт визуально на наличие ошибок - отсутствие ";" в конце строк, наличие непарных скобок и кавычек и т.п., запустите скрипт для проверки прямо из командной строки, перейдя предварительно в каталог cgi-bin. Вот некоторые примеры того, как это делается:
./testform.pl
/usr/local/bin/perl testform.pl
c:perlperl.exe testform.pl
Если в скрипте содержатся ошибки, то вы увидите сообщение типа
syntax error at testform.pl line 18, near "open"
Execution of testform.pl aborted due to compilation errors.
В этом случае проверьте текст около указанной строки. Помните, что причина ошибки может быть выше на несколько, иногда достаточно много строк. Исправленный скрипт сохраните, и тестируйте так до тех пор, пока он не выдаст корректных выходных данных:
Content-Type: text/html
<h3>Спасибо, что заполнили форму</h3>
Нажмите <a href="http://server-name/names.html">сюда</a>, чтобы увидеть Ваш ввод.
Шаг 4 - Тестирование скрипта с формой
Если скрипт работает сам по себе, вы можете оттестировать его с формой:
Убедитесь, что web-сервер запущен.
Запустите ваш браузер.
Наберите URL по которому находится ваша форма (обратите внимание, что строка должна начинаться с http://, а не с file://.
Введите ваше имя в поле формы и нажмите кнопку "Зарегистрировать".
Вы должны увидеть сообщение вроде этого:
Спасибо, что заполнили форму
Нажмите сюда, чтобы увидеть Ваш ввод.
Это и есть страница, сгенерированная скриптом "на лету". Если вы получили сообщение об ошибке сервера, проверьте правильность расположения скрипта и правильность значения параметра action в тэге form.
Если вы видите правильно сгенерированную страницу, нажмите на ссылку. Вы должны будете увидеть новую страницу, созданную скриптом примерно в таком виде:
Имя: Новиков
Если вы не видите этого, проверьте правильность пути в переменной $targetfile и правильность URL в предпоследней строке скрипта. В противном случае форма и скрипт правильно работают вместе. Вы успешно создали первое web-приложение.
Далее мы рассмотрим четыре части созданного нами скрипта более внимательно.
Обсуждение: Настройка скрипта
Как уже было сказано, первая часть скрипта содержит настройки, включающие в себя несколько элементов. Первая строка определяет путь к программе-интерпретатору:
#!/usr/local/bin/perl для UNIX
или
Program FilesPerl5perl.exe для Win32
Также в начале скрипта вы, для удобства, можете разместить комментарий о том, для чего предназначен этот скрипт.
Комментарии могут располагаться в любом месте программы и начинаются с символа #:
# Это комментарий
или
open (NAMEFILE, ">$testfile"); #Открываем файл для записи...
Также хорошей манерой является определение в начале скрипта всех констант и глобальных переменных. (Советую все пути прописывать в виде переменных, особенно если программа содержит более 50 строк, для удобства изменения местоположения файлов). Например:
$homepage = "http://server_name/home/index.html";
Все обычные переменные в Perl начинаются с символа $. Существует много других видов переменных, таких как массивы и т.п.
Все строки программы кроме первой и комментариев должны заканчиваться на ";".
Обсуждение: Чтение данных из формы
Теперь необходимо "считать" введенные пользователем данные в переменные Perl. После того как пользователь нажмет кнопку Submit в форме браузер посылает серверу имя скрипта и данные, взятые из формы. Данные передаются скрипту на стандартный вход.
Предположим, что форма содержит следующие поля:
Имя поля в форме
Имя, определенное параметром name="xxx" в тэге поля
Данные пользователя
Имя:
user_name
Andy Novikov
Компания:
co_name
TeleSputnik
Телефон:
phone
(812) 123-45-67
В этом случае данные будут посланы скрипту в следующем формате:
user_name=Andy+Novikov&co_name=TeleSputnik&phone=(812)+123-45-67
Perl скрипт должен разобрать эту строку по частям и сохранить в переменных для дальнейшей обработки. Строки, производящие эти действия достаточно стандартны:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
Эта строка читает данные со стандартного входа и помещает их в переменную $buffer. Длина строки передается скрипту через переменную окружения CONTENT_LENGTH.
Как только данные помещены в переменную $buffer вы можете разбить их на отдельные переменные с соответствующими им значениями:
@pairs = split(/&/, $buffer);
Теперь мы получили массив @pairs со следующими строковыми переменными:
[1] user_name=Andy+Novikov
[2] co_name=TeleSputnik
[3] phone=(812)+123-45-67
Теперь нам необходимо разбить эти строки на пары параметр-значение:
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /; # заменяем плюсы на пробелы
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|n)*-->//g;
$input{$name} = $value;
}
Таким образом вы получаете массив переменных, индексом в котором является значение параметра name поля формы, а значением - данные, введенные в соответствующее поле.
Обсуждение: Что делать с данными?
Следующим шагом является обработка данных. Но как? Все зависит от того, что вы хотите сделать с данными. В нашем примере мы на основе полученных данных создаем новый HTML документ. Нише мы рассмотрим несколько простых примеров того, что можно сделать с полученными данными. Обратите внимание, что мы не предпринимаем попыток проверить правильность (validate) содержимого полей. Хотя в реальных скриптах это является желательным, а иногда и необходимым действием.
Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10
Другие материалы по теме:
- ставим пароль на страницу- Perl для чайников от ns
- повышение индивидуального мастерства дизайнера
- Синдром устаревшего сайта: Как технологии влияют на дизайн
- использование библиотеки mime-base64
