Библиотека Интернет Индустрии I2R.ru |
|||
|
Основы web-дизайна. Perl и CGI. Часть I
До сих пор мы с вами сталкивались с единственной разновидностью скриптов: клиентскими скриптами, выполняющимися на клиенте, т. е. компьютере посетителя веб-страницы, и написанными, как правило, на языке JavaScript. Существенным ограничением такого решения является, например, отсутствие возможности сохранения получаемых данных: в силу соображений безопасности скрипт, выполняющийся в браузере, не имеет доступа к подавляющему большинству ресурсов компьютера, в частности -- к файловой системе. Разумеется, это не единственный недостаток client-side скриптов. На сегодняшнем уроке мы поговорим о программах, выполняющихся на стороне сервера: того самого сервера, на котором хранятся просматриваемые нами веб-страницы. Эти программы могут быть инициированы обращением к ним браузера посетителя: точно так же, как в случае запроса с именем html-файла, когда сервер возвращает гипертекст, в ответ на запрос с именем файла типа Вопреки распространённому среди новичков заблуждению, CGI (Common Gateway Interface) -- это не язык, а лишь тип интерфейса, протокол обмена данными между сервером и программой. CGI-программа может быть написана практически на любом языке, компилятор (интерпретатор) которого может работать в той ОС, под которой запущен веб-сервер. Чаше всего CGI-приложения пишутся на языке Perl, именно о нём мы сегодня и поговорим. Для того, чтобы поэкспериментировать с cgi-скриптами, предварительно нужно инсталлировать Perl и правильно настроить сервер. За дистрибутивом ActivePerl для Windows нужно идти на сайт компании Activestate. Нужный вам продукт распространяется бесплатно. Думаю, что с его поиском и инсталляцией проблем возникнуть не должно. Замечу лишь, что лучше всего инсталлировать ActivePerl в папку Для работы с Perl вам потребуется специализированный редактор. Можно обойтись и Notepad'ом, но в нём нет подсветки синтаксиса, невозможно организовать вывод диагностики в сам редактор и т. д. и т. п. Подходящих редакторов десятки, сам я пользуюсь Perlbuilder'ом, пробную версию которого можно скачать с сервера Solutionsoft. Настройка ApacheТеперь откроем файл 1. В первую очередь нужно сказать серверу, в какой папке можно запускать скрипты: по умолчанию это делать запрещено. Найдите в файле ScriptAlias /cgi-bin/ "D:/MyWeb/artefact.list.ru/cgi/" <Directory "D:/MyWeb/artefact.list.ru/cgi"> Понятно, что нужно прописать те пути, которые соответствуют вашему компьютеру. Обратите внимание, что для директории 2. Теперь надо определить, файлы какого типа Apache должен считать скриптами. Ищем в AddHandler cgi-script .pl Собственно, для cgi-скриптов можно задать практически любое расширение, но чаще всего используют На этом настройки Apache закончены. Перезапустите сервер. Осталось убедиться в том, что все описаные процедуры проделаны правильно. В папке, предназначенной для хранения скриптов, создайте текстовый файл. Содержимое его должно быть таким: #!C:/Perl/bin/Perl.exe Обратите внимание на первые две строки скрипта. В первой строке должен быть указан путь к интерпретатору языка Perl, который вы установили у себя на компьютере. Эта строка обязана присутствовать в каждом скрипте, в противном случае сервер будет генерировать ошибку, а сам скрипт не будет выполняться. Вторая строка должна предварять любой вывод информации в браузер. Если её не будет, сервер также выдаст сообшение об ошибке: отличие от предыдущего случая в том, что код скрипта до операций вывода успеет выполниться. Итак, переименум файл с кодом в http://localhost/cgi-bin/test.pl Если вы всё сделали правильно, то в окне браузера появится надпись «Hello world!», в противном случае вы увидите сообщение об ошибке. Для того, чтобы узнать, что именно не понравилось серверу, посмотрите в файл use CGI::Carp qw (fatalsToBrowser); Учтите, что удалённый сервер, на котором вы собираетесь хранить свои скрипты, наверняка сконфигурирован иначе, нежели ваш личный компьютер. В Unix-системах путь к интерпретатору Perl обычно выглядит так: #!/usr/bin/perl Соответственно измените первые строки своих скриптов перед тем, как загружать их на удалённый сервер. Кроме этого вам может потребоваться изменить права для загружаемых файлов: делается это командой Язык ПерлЯзык Perl одновременно очень прост -- и довольно сложен. Просто потому, что элементарные задачи с его помощью решаются в одно действие, как в школьном Бэйсике. $a = 2; Не стоит пугаться «лишних» символов: в Perl'е принято предварять имена переменных префиксами, знак доллара означает, что мы имеем дело со скаляром, т. е. числом или строкой символов. Есть ещё массивы, имена которых начинаются с символа « Сложен Perl по двум причинам: во-первых, он даёт возможность решить любую задачу более чем одним способом, хотя бы потому, что сам синтаксис языка не слишком строг. Во-вторых, Perl позволяет разработчику, знакомому с недокументированными и малоиспользуемыми особенностями языка, писать код, который новичок, пусть он даже уже знаком с двумя-тремя популярными языками программирования, вовсе не сможет прочитать. Не верите? Ничего, это пройдёт. Если придерживаться некоего «среднего» уровня программирования, то Perl скорее всё-таки прост. В нём есть знакомые любому программисту директивы while, if, for, read, print и т. д. Есть в нём и удивительный инструмент, который называется Regular Expressions (регулярные выражения): с его помощью вы можете проделать со строками символов всё, что угодно. Правда, выглядит это жутковато для неподготовленного глаза: s/%([0-9a-fA-F])/pack("c",hex($1))/ge; или s/(href=\".*?)\.+(\")/$1$2/igm; На самом же деле, как говаривал незабвенный профессор Айсберг, всё очень и очень просто. Естественно, я не буду писать руководство по программированию на Perl. Их и так слишком много, этих руководств. А вот несколько примеров решения самых распространённых задач, с которыми сталкивается веб-программист, нам не помешают.
|
|
2000-2008 г. Все авторские права соблюдены. |
|