мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
perl:ex [13/03/2010 16:29] Владимир Власовperl:ex [04/04/2017 17:30] (текущий) – [Урок 8: Работа с ключиками в CGI.pm] Владимир Власов
Строка 1: Строка 1:
 ====== Упражнения и задания к урокам ====== ====== Упражнения и задания к урокам ======
 +
 +===== Урок 0: простые числовые функции =====
 +
 +**Задание:** Написать небольшой скрипт, который вычисляет некоторую числовую функцию, определненную самим программистом
 +(корни квадратного уравнения, факториал натурального числа, числа Фиббоначи, простое число или составное и т.п.) 
 +
 +Примерный образец реализации такого задания может быть [[:perl:ex0|найден здесь]].
 +
 +
  
 ===== Урок 1: ввод/вывод (консоль, локальный файл) ===== ===== Урок 1: ввод/вывод (консоль, локальный файл) =====
Строка 21: Строка 30:
  
 Образец задания 3 [[:perl:ex3|здесь]]. Образец задания 3 [[:perl:ex3|здесь]].
 +
 +**Более простое упражнение.** Взять некоторый многострочный текстовой файл произвольного содержания, в котором встречается определённое слово, например "test", заранее определённое число раз. Написать скрипт, который подсчитывает точное количество вхождений слова "test" в указанном текстовом файле с помощью функции <nowiki>index($str,"test",$pos)</nowiki>, используемой в цикле. Особой оптимизации не требуется, главное -- точный подсчёт встречаемости!
 +
 +Файл для упражнения  [[:perl:task3-0|здесь]].
  
 ===== Урок 4: регулярные выражения ===== ===== Урок 4: регулярные выражения =====
Строка 26: Строка 39:
 Цель урока: ознакомить с простейшими приемами использования регулряных выражений в поиске и замене. Цель урока: ознакомить с простейшими приемами использования регулряных выражений в поиске и замене.
  
-**Задание 1:** Решить задачу из предыдущего урока с использованием регулярных выражений.+**Задание 4-1:** Решить задачу из предыдущего урока с использованием регулярных выражений.
  
 Образец выполнения задания [[:perl:ex4-1|здесь]]. Образец выполнения задания [[:perl:ex4-1|здесь]].
  
-**Задание 2:** В html-файле извлечь URL всех ссылок на доменные зоны .ru и .com (остальные не извлекать) и дать отчет отдельным текстовым файлом построчно.  +**Задание 4-2:** В html-файле извлечь URL всех ссылок на доменные зоны .ru и .com (остальные не извлекать) и дать отчет отдельным текстовым файлом построчно. Файл реальный, грязно офромленный, с разрывами строк внутри тэгов.  
 + 
 +Файл для задания 4-2 [[:perl:task4-2|здесь]]. 
 + 
 +===== Урок 5: простое применение cgi ===== 
 + 
 +Цель урока: ознакомиться с простейшими возможностями формирования html-страницы "на лету" средствами cgi-программирования. 
 + 
 +**Задание 5:** Сформировать динамически на PERL простую html-страницу. 
 + 
 +Примерный образец реализации такого задания может быть [[:perl:ex5|найден здесь]]. 
 + 
 +===== Урок 6: использование модуля CGI.pm ===== 
 + 
 +Цель урока: ознакомиться с возможностями простого диалога клиента и сервера, используя возможности модуля CGI.pm 
 + 
 +**Задание 6:** Создать в каталоге public_html html-страницу, содержащую форму, одно текстовое поле ввода, кнопку сброса и кнопку выполнения. Создать на PERL скрипт, который в теле динамически генерируемой страницы показывает то, что было введено в поле ввода исходной формы. 
 + 
 +Примерный образец реализации такого задания может быть [[:perl:ex6|найден здесь]]. 
 +[[http://users.nsunc.com/~vlasov/testform.html|Образец страницы]], использующий данный скрипт, и [[:perl:ex6html|код самой страницы]] 
 + 
 +===== Урок 7: без использования модуля CGI.pm ===== 
 + 
 +Цель урока: простой диалог клиента и сервера, не используя возможности модуля CGI.pm. Данная необходимость может возникнуть для достижения эффективности (каждый запуск модуля несет накладные расходы) или в простейших скриптах, где не нужны большие возможности модуля. 
 + 
 +**Задание 7:** Повторить предыдущее задание, не используя модуль CGI.pm. 
 + 
 +Примерный образец реализации такого задания может быть [[:perl:ex7|найден здесь]]. 
 +[[http://users.nsunc.com/~vlasov/testform2.html|Образец страницы]], использующий данный скрипт, и [[:perl:ex7html|код самой страницы]] 
 + 
 +**Отметим**, что cgi-скрипты можно писать на любом языке программирования, [[perl:ex7pascal|например, на Pascal]], и работать это будет следующим образом: [[http://users.nsunc.com/~vlasov/testpas.html|Образец страницы на паскале]]. 
 + 
 +[[perl:testcgi|тестовая страничка на Баше]] 
 + 
 +===== Урок 8: Работа с "ключиками" в CGI.pm ===== 
 + 
 +Скрипт ниже первым делом пытается считать ключик с именем "mucoo", и если ключик определен, то выводится его значение. Если ключик не определен, то он создается. Значение выбирается по текущему времени в секундах: %%$t = time();%% а время жизни --- один час. При этом выводится вся возможная информация о ключике с именем "mucoo". [[http://users.nsunc.com/~vlasov/cgi-bin/cookie.cgi|Действующий скрипт доступен здесь.]] 
 + 
 +<code perl> 
 +#!/usr/bin/perl
  
 +use CGI qw(:standard);
 +$coo = cookie("mucoo");
 +if (defined($coo)) {
 +#if (1) {
 +  print header(-charset=>"utf-8");
 +  print start_html("Your cookie"), p("You cookie was: <b>$coo</b>"),  end_html();
 +} else {
 +  $t = time();
 +  $coo = cookie(-name => "mucoo", -value => $t, -expires => "+1h");
 +  print header(-charset=>"utf-8",-cookie=>$coo);
 +  print start_html("Setting cookie"), p("You cookie is now: <b>$coo</b>"),  end_html();
 +};
 +</code>