Обсуждаем модуль CGI для PerlНа мой взгляд, модуль CGI наилучший, в смысле простой, вариант для декодирования данных из форм HTML страниц. Этот модуль позволяет делать еще некоторые вещи, например генерировать HTML страницы, но это тема для другой статьи. Начнем с того, что этот модуль позволяет использовать 2 стиля программирования: функционально-ориентированный и объектно-ориентированном. Имеет смысл рассмотреть второй метод, т.к.: гораздо удобнее программировать, можно создать несколько объектов в программе (области данных этих объектов не пересекаются), а также можно сохранить текущее состояние объекта во внешнем файле или напримерв БД, хотя последнее не относится к стилю программирования. Теперь об этом по порядку. Как правило, скрипты используются для обработки данных форм. Хотя, врочем, это не важно. В 99% случаев необходимо получить значения передаваемых скрипту параметров. Параметры могу передавать 2 способами (методами) POST или GET. Не принципиально каким способом передавать параметр скрипту. Единственное ограничение которое имеется, это количество (объем в кб) параметров передаваемых тем или иным способом. Для метода GET - 2кб, для POST - ограничения нет (в протоколе CGI, если я не прав - поправьте меня). Для подключения модуля в программу достаточно просто написать:use CGI; Для создания объекта нужно использовать метод new: $query=new CGI; - создали объект с помощью метода new. У этого метода существует несколько различных вариантов $query=new CGI(INPUTFILE); - создаем объект и инициализируем его из файла. Передаем дескриптор файла! $query = new CGI(*STDIN); - инициализация из STDIN $query = new CGI( {'dinosaur'=>'barney', 'song'=>'I love you', 'friends'=>[qw/Jessica George Nancy/]} ); - можно передать массив имен параметров и их значений $query = new CGI('dinosaur=barney&color=purple'); - или строкой $query=new CGI($old_query); - или используя имеющийся объект Под инициализацией следует понимать передачу строки вида: name1=value1&name2=value2&name3=value3 и т.д. (Кроме инициализации из файла. Об этом ниже.) Где name1, name2, name3 и т.д. имена параметров, а value1, value2, value3 соответственно их значения. Но нас интересует самый простой метод $query=new CGI; - объект "сам" разбирается каким методом POST или GET мы передаем параметры, а если мы запустили программу из shell'a, то строку берет из STDIN. После создания объекта нам необходимо получить значения параметров (в большинстве случаев мы знаем имена параметров, т.к. сами их задаем). Это делается так: Если мы незнаем имена параметров, то их можно узнать так: Когда параметров много довольно неудобно каждый раз писать, что-то типа: Проще сделать так: Сохранение состояния скрипта в файл: Восстановление состояния скрипта из файла: для этого, при создании объекта в методе new параметром передаем дескриптор файла состояния. Это описано выше. В этой статье я не коснулся таких вещей, как множество значений одного параметра.
Как получать их значения возможно я напишу в следующей статье. А тому кто не
может ждать я рекомендую почитать официальную документацию на модуль CGI.pm.
Автор: Жорж Пращарук( mailto:chidar@mail.ru )
|