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

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




⚡ 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Данная работа написана для людей, которым в силу непреодолимых обстоятельств приспичило срочно изучить Перл. Для меня таким обстоятельством стало то, что мой компьютер стал 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.
При использовании метода 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=абвг
Декодировать строку запросов в первый раз лучше самому. На вопрос "а как?" есть множество ответов, переписывать которые нет смысла. Приведу лишь короткий пример:
Потом заменяем все сочетания знака (%), после которого следуют шестнадцатиричные цифры, на соответствующий символ ASCII
$query =~ s/%([0-9A-H]{2})/pack('C', hex($1))/eg;
Я пользуюсь тем, что предлагает Perl Builder:
&GetFormInput; # вызов подпрограммы получения данных
$Category = $field{'Category'}; # получаем данные из поля Category
$Description = $field{'Description'}; # получаем данные из поля Description
$Page = $field{'Page'}; # получаем данные из поля Page
В конце скрипта помещаем подпрограмму "прозрачного" чтения данных.
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});
($name,$val)=split (/=/,$fval[$i],2);
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~ s/%(..)/pack("c",hex($1))/ge;
#if you want multi-selects to goto into an array change to:
Второй этап работы скрипта - обработка данных - полностью на Ваше усмотрение. Проверяйте полученные данные на правильность, пишите их в файл, делайте что хотите.
И, наконец, Вам нужно выдать какие-то результаты броузеру клиента, причем так, чтобы броузер правильно их отобразил. То есть, выдавать результаты нужно в HTML. Это делается просто: (тоже можно по-разному)
print 'Content-type: text/html', "/n/n"; #обязательнаястрока
Вполе Category Выввели: ', $Category, '
Все это касается скриптов, получающих данные из формы на странице HTML. При этом страница с формой - отдельно, скрипт - отдельно. Можно сделать красивее и удобнее: объединить страницу и скрипт в единое целое. Для этого скрипт пишется по схеме:
При первом запуске скрипт рисует HTML страницу с формой и ссылкой в тэге ACTION на самого себя. Первый запуск определяется по отсутствию входных данных.
Если входные данные есть, то получаем их, обрабатываем и выдаем результаты.
if (($ENV{'QUERY_STRING'} eq '') or ($ENV{CONTENT_LENGTH}=0) )
{# получаем данные, обрабатываем и выдаем результат}
Общий алгоритм работы гостевой книги таков:
1. Если посетитель хочет сделать запись в книгу, то
1.2 Записываем их в файл или в базу данных
1.3 Говорим спасибо на HTML и предлагаем почитать другие записи
2. Если посетитель хочет почитать записи в книге, то
2.1 Читаем записи из файла или из базы данных
Для удобства восприятия я оформил пункты 1 и 2 отдельными скриптами add_guestbook.pl и read_guestbook.pl соответственно. Сообщения гостевой книги хранятся в текстовом файле построчно, т.е. на каждую запись - строка. Так сделано для удобства чтения этого файла. Пример одной записи:
Sat Dec 5 13:31:20 1998&Наташа&студентка&Good&Для начала хорошо. Успехов на данном поприще Вам, Александр!&нету@пока&194.226.60.34
Вот описание полей рассматриваемой гостевой книги.
Name - имя, фамилия, отчество, кличка - на усмотрение посетителя
RadioButton - три кнопки: понравилось (Good), не понравилось (Bad), пофигу (Different)
Text - text box комментариев и примечаний
# Я использую навигационную панель в виде SSI-включения. Для этого используется модуль ssi-pl.pl
if (($ENV{'QUERY_STRING'} eq '') or ($ENV{CONTENT_LENGTH}=0) )
# Если нет входных данных, то генерируем страницу с формой


Книга жалоб и предложений





DoInclude("_menu.htm"); # Это SSI-включение навигационной панели.





else # все данные правильно введены
# Если все поля заполнены правильно, то начинаем их обрабатывать.
$Text=~tr/\r\n/ /; #заменяем перевод строки на пробел
# Если в текстовом поле формы (text box) посетитель нажимал Enter,
# то нужно убрать символы перевода строки, чтобы можно было записать
# все поля формы в одну строку файла.
if ($Work eq '') {$Work=' '}; #если пусто - то пробел
# Если поле не заполнено, то оно равно пробелу.
# Если посетитель использовал символ &, то заменяем его на пробел,
# поскольку этот символ мы будем использовать для разделения наших полей в файле.
open(OutFile, ">>guestbook.txt") || die;
# Получаем время заполнения гостевой книги.
$line=join('&', $Time, $Name, $Work, $RadioButton, $Text, $Email, $ENV{REMOTE_HOST});
# И, наконец, слепляем все поля формы в одну строку. На всякий случай добавляем в конце
# IP адрес посетителя, взятый из переменных окружения.
# Записываем полученную строку в файл и закрываем его.
# Осталось только сказать посетителю спасибо.
print "Content-type: text/html\n\n";
print ''."\n" ;
print ''."\n" ;
print "Книга жалоб и предложений\n" ;
print ''."\n" ;
print '



'."\n" ;
print ' '."\n" ;
print ' '."\n" ;
print ''."\n" ;
print ' '."\n" ;
print ' '."\n" ;
print ' '."\n" ;
print ' '."\n" ;
# Не забываем подпрограмму разбора данных из формы.
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});
($name,$val)=split (/=/,$fval[$i],2);
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~ s/%(..)/pack("c",hex($1))/ge;
#if you want multi-selects to goto into an array change to:
Вот и все. Пример работы описанного скрипта можно посмотреть на http://treagraf.tasur.edu.ru/cgi-bin/add_guestbook.pl
# Я использую навигационную панель в виде SSI-включения. Для этого используется модуль ssi-pl.pl
open(InFile, "guestbook.txt") || die;
# Открываем файл с записями гостевой книги.


Книга жалоб и предложений - нам пишут

\n" ;
print '





# Теперь выводим записи в невидимой (в смысле, рамка не видима) таблице.
# Чтобы свежие записи отображать первыми, обрабатываем массив строк с конца.
for ($i=$#lines; $i>=$[; $i--) #обрабатываем строки файла с конца
@item=split('&', $lines[$i]); #разделяем на части
# Теперь заменяем HTML тэги в записи (на случай какого-нибудь хитрого юзера)
# Приступаем непосредственно к выводу записей в HTML
print '
# Закрываем файл с записями гостевой книги.
Александр Боровский .
Практический Перл для начинающего.

Название: Практический Перл для начинающего
Раздел: Рефераты по информатике
Тип: реферат
Добавлен 07:08:56 23 февраля 2011 Похожие работы
Просмотров: 3
Комментариев: 19
Оценило: 2 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Реферат: Практический Перл для начинающего
Отчет По Практике На Тему Технология Производства Водки
Пособие по теме Медико-тактическая характеристика поражающих факторов современных видов оружия
Реферат: Інвестування в аграрній сфері
Реферат по теме Проектирование лесных машин ЛП17А
Сочинение Рассуждение Сила Духа По Яковлеву
Реферат: Калькуляция себестоимости
План Сочинения По Обществознанию 2022
Сочинение Война И Мир Толстой 10 Класс
Контрольная работа по теме Взрывание на выброс
Реферат по теме Интернет об интернете
Написать Сочинение На Тему Картины Осени
Реферат по теме Тип производства и его организация. Технико-экономический анализ
Слова Для Сочинения Сказки
Сочинение На Тему Красота 70 Слов
Реферат: Put The Homeless To Work Essay Research
Эссе По Философии По Книге
Гмо Пайдасы Мен Зияны Эссе
Вред Приносимый Сорными Растениями Реферат
Реферат На Тему Сложность Выбора Собаки
Контрольная Работа N2 По Математике 6 Класс
Реферат: Амортизация основных средств и их восстановление в современных условияхРеферат: CATS CRADLE Essay Research Paper Jonathan SwiftРеферат: Анализ Гражданской войны в России'."\n";
# В зависимости от поля, где посетителю предлагался выбор понравилось - не понравилось,
# рисуем картинку с веселой или грустной мордочкой соответственно. В качестве ALT тэга
# картинки пропишем IP адрес посетителя.
print ''.' '.$item[4]."\n";
print ''.$item[1].', '.$item[2]."\n";
print ''.$item[5].''."\n";
print ''.$item[0]."\n";


Report Page