Реферат по предмету "Программирование"


Практический Перл для начинающего

Практический
Перл для начинающего

Данная работа
написана для людей, которым в силу непреодолимых обстоятельств приспичило
срочно изучить Перл. Для меня таким обстоятельством стало то, что мой компьютер
стал WEB-сервером, а я, соответственно, WEB-мастером. Учиться принято на чужих
ошибках и опыте, поэтому предлагаю Вашему вниманию свой опыт изучения Перла.

Сразу нужно
пояснить, для кого это все написано. Если Ваш сервер работает на платформе
UNIX, то это я должен читать Вашу статью. У меня же установлен Windows NT
workstation 4.0 (RUS) плюс
Service Pack 3. Когда пришло
время сделать из компьютера WEB-сервер, я было кинулся ко встроенным Службам
узла WEB, но быстро понял, что это мне не нравится (почему ?). И тут один
добрый человек посоветовал поставить Xitami WEB Server от iMatix Corporation
(http://www.imatix.com/), который и стоит по сей день.

Что касается
самого Перла, то здесь несколько сложнее. Покопавшись по различным Перловым серверам
(www.perl.org , www.perl.com ) я узнал, что версий Перла настолько много, что
выбрать что-нибудь конкретное довольно сложно. При этом каких-нибудь
вразумительных рекомендаций по поводу выбора той или иной версии нигде нет.
Перепробовав почти все версии для Windows, я остановил свой выбор на Active
Perl (http://www.activestate.com/).

Человеку,
избалованному всякими Виндовозами и Дельфями, писать программы на Перл довольно
непривычно, поэтому настоятельно рекомендую сразу установить Perl Builder.
Взять его можно на www.solutionsoft.com. Там лежала тридцатидневная Демо
версия.

Ну, думаю, пора
переходить непосредственно к делу. В общем случае, скрипт на Перл, как и любая
другая программа, работает так:

получает данные


обрабатывает
данные

выдает
результаты

Передать данные
скрипту можно двумя методами - GET и POST. Разница между ними в том, что при
использовании GET данные постоянно болтаются в строке адреса браузера, напимер:


httр://treagraf.tasur.edu.ru/cgi-bin/price.pl?Category=POWER&Description=varta

В этом случае
скрипт B_price.pl
берет данные в переменной окружения QUERY-STRING.

$data=$ENV{'QUERY_STRING'};

При
использовании метода POST данные передаются на стандартный вход скрипта. Длинна
блока данных берется в переменной CONTENT_LENGTH:

read(STDIN,$data,$ENV{'CONTENT_LENGTH'});

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

Стандартным
соглашением служит замена пробелов знаками плюс и затем кодировка оставшихся
недопустимых символов с помощью ASCII-кодов в шестнадцатиричной форме, перед
которыми ставится знак (%). Пример:

http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?Category=%C2%E8%E4%E5%EE&Description=%E0%E1%E2%E3

Это значит:

http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?Category=Видео&Description=абвг

Декодировать
строку запросов в первый раз лучше самому. На вопрос "а как?" есть
множество ответов, переписывать которые нет смысла. Приведу лишь короткий
пример:

Заменяем знаки
(+) на пробелы

$query = ~ s/+/ /g;

Потом заменяем
все сочетания знака (%), после которого следуют шестнадцатиричные цифры, на
соответствующий символ ASCII

$query =~ s/%([0-9A-H]{2})/pack('C', hex($1))/eg;

Я пользуюсь
тем, что предлагает Perl Builder:

#! E:perl5binperl

&GetFormInput; # вызов подпрограммы получения данных

$Category = $field{'Category'}; # получаем данные из поля Category

$Description = $field{'Description'}; # получаем данные из поля Description

$Page = $field{'Page'}; # получаем данные из поля Page

В конце скрипта
помещаем подпрограмму "прозрачного" чтения данных.

sub GetFormInput {

(*fval) = @_ if @_ ;

local ($buf);

if ($ENV{'REQUEST_METHOD'} eq 'POST') {

read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});

}

else {

$buf=$ENV{'QUERY_STRING'};

}

if ($buf eq "") {

return 0 ;

}

else {

@fval=split(/&/,$buf);

foreach $i (0 .. $#fval){

($name,$val)=split (/=/,$fval[$i],2);

$val=~tr/+/ /;

$val=~ s/%(..)/pack("c",hex($1))/ge;

$name=~tr/+/ /;

$name=~ s/%(..)/pack("c",hex($1))/ge;

if (!defined($field{$name})) {

$field{$name}=$val;

}

else {

$field{$name} .= ",$val";

#if you want multi-selects to goto into an array
change to:

#$field{$name} .= "


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.