Библиотека Интернет Индустрии I2R.ru |
|||
|
Основы web-дизайна. Perl и CGI. Часть II
Примеры CGI-скриптов1. Выдача информации в браузер Возьмём простейшую задачку: пусть скрипт что-нибудь посчитает и выдаст в браузер результат. Замените содержимое файла #!C:/Perl/bin/Perl.exe Вся информация, расположенная в блоке print qq~ будет передана браузеру as is, т. е. в неизменённом виде. Как видно из приведённого выше примера, организовывать вывод таким образом очень удобно, т. к. переменные (в данном случае $b) можно вставлять прямо в html-код, а в source code выведенной страницы в этом месте будут находиться их значения. Таких блоков в тексте программы может быть сколько угодно, их можно, скажем, сгруппировать в подпрограммы (ключевое слово sub) и снести в конец файла скрипта, чтобы не загромождать текст Perl-программы html-ем. К слову, этот способ вывода html-кода удобен ещё и по другой причине. Представьте себе, что вам нужно вывести в браузер строку типа « print "12375"ghr"; мы получим ошибку, и программа выполняться не будет. Причина в том, что символ «"» будет воспринят как конец строковой константы (string terminator), и всё, что следует за ним, интерпретатор попытается воспринять как код Perl, рузультатом чего явится сообщение об ошибке. В других ситуациях -- например, в случае с регулярными выражениями, синтаксис которых довольно сложен -- в разряд специальных попадут «/», «?», «.», «\», «$», «^» и многие другие символы. Обычно эта проблемы решается использованием символа «\» (backslash): print "12375\"ghr"; все символы, перед которыми стоит бэкслэш, будут интерпретироваться как обычные и не окажут никакого влияния на выполнение программы. Пусть вам нужно отдать браузеру десятки строк html-кода. Если делать это построчно, то, во-первых, каждую строку придётся заключайть в контейнер « 2. Приём данных из формы Немного усложним задачу. Пускай теперь скрипт производит вычисления с данными, которые передаются ему браузером. Вопрос первый: как эти самые данные передать? Способ первый: передача параметров при помощи URL. До сих пор мы вызывали скрипт, направляя браузер по следующему адресу: http://localhost/chi-bin/test.pl Предположим, у нас есть два параметра. Перепишем URL следующим образом: http://localhost/chi-bin/test.pl?a=2&b=4 Теперь наш скрипт сможет прочитать имена и значения передаваемых ему переменных, как именно -- я опишу чуть позже. Обратите внимание: последовательность передаваемых скрипту данных открывается символом «?», а пары имя/значение отделяются друг от друга амперсендом («&»). Недостаток способа: все передаваемые параметры в явном виде присутствуют в строке адреса браузера, что в ряде случаев может быть неудобно. Способ второй: передача данных через html-форму. Пусть веб-страница содержит форму примерно такого вида: <form method=POST action="http://localhost/test.pl"> После нажатия кнопки «Отправить данные» скрипт сможет прочитать названия и значения всех полей формы, включая скрытые, что в итоге даст результат, аналогичный предыдущему, но передаваемые параметры посетитель страницы не увидит, хотя для скрипта этот метод абсолютно аналогичен вызову http://localhost/test.pl?par1=56817&par2=rtrtrt Способ чтения такой формы тот же самый, что и в случае передачи параметров через URL. О нём мы сейчас и поговорим. Создадим страничку, содержащую ссылку http://localhost/chi-bin/test.pl?a=2&b=4 Теперь снова перепишем #!C:/Perl/bin/Perl.exe Я не буду подробно разбирать эту часть кода, т. к., как уже упоминалось, обучение языку Perl выходит за рамки данного курса. Скажу лишь, что результатом работы цикла foreach является ассоциативный массив (associative array), содержащий имена и значения всех входных параметров. Достаточно понять, что каждое из этих значений теперь может быть получено вызовом элемента массива После вызова скрипта в окне браузера должно появиться значение переменной 3. Работа с файлами Новая задача: скрипт должен прочитать текстовый файл и выдать его содержимое в окно браузера. Создайте в той же папке, в которой находится файл #!C:/Perl/bin/Perl.exe Вот и всё. Заметьте, что слияние строк в Perl'е обозначается точкой (например, две текстовые переменные объединяются записью Запустите скрипт, набрав его адрес в строке браузера. Если что-то не так -- см. две последние фразы примера №2. 4. Регулярные выражения Как уже было сказано выше, регулярные выражения предназначены для обработки строк. Распознать regexp (сокращённое название Regular Expression) достаточно просто, обычно их предваряет знак «=~», а сами выражения начинаются с буквы (букв), задающей тип операции: # Поиск первой кратчайшей подстроки, Возможно, это покажется бессмысленным: по крайней мере, мне в своё время казалось. Но посмотрите, какие простейшие полезности можно делать с помощью регулярных выражений: # Одним движением руки убираем все пробелы в начале Нравится? Сомневаюсь. Но ещё обязательно понравится. Кстати. все тексты в библиотеке обрабатывались при помощи регулярных выражений, а значит, какая-то польза от них всё-таки есть... ;-)
|
|
2000-2008 г. Все авторские права соблюдены. |
|