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

Упражнения и задания к урокам

Урок 0: простые числовые функции

Задание: Написать небольшой скрипт, который вычисляет некоторую числовую функцию, определненную самим программистом (корни квадратного уравнения, факториал натурального числа, числа Фиббоначи, простое число или составное и т.п.)

Примерный образец реализации такого задания может быть найден здесь.

Урок 1: ввод/вывод (консоль, локальный файл)

Задание: Написать небольшой скрипт, который считывает строку с клавиатуры, выводит ее в каком-либо измененном виде, дописывает ее в файл.

Примерный образец реализации такого задания может быть найден здесь.

Урок 2: работаем со списками и хэшами

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

Образец задания 2 здесь.

Урок 3: работаем со строками

Цель урока: научиться работать с простыми строковыми функциями, такими как index и substr. Основное задание: дан html-файл, в котором каждый тэг расположен не более чем в одной строке. Нужно, построчно считывая файл, найти все тэги и удалить их.

Файл для задания 3 здесь.

Образец задания 3 здесь.

Более простое упражнение. Взять некоторый многострочный текстовой файл произвольного содержания, в котором встречается определённое слово, например «test», заранее определённое число раз. Написать скрипт, который подсчитывает точное количество вхождений слова «test» в указанном текстовом файле с помощью функции index($str,"test",$pos), используемой в цикле. Особой оптимизации не требуется, главное – точный подсчёт встречаемости!

Файл для упражнения здесь.

Урок 4: регулярные выражения

Цель урока: ознакомить с простейшими приемами использования регулряных выражений в поиске и замене.

Задание 4-1: Решить задачу из предыдущего урока с использованием регулярных выражений.

Образец выполнения задания здесь.

Задание 4-2: В html-файле извлечь URL всех ссылок на доменные зоны .ru и .com (остальные не извлекать) и дать отчет отдельным текстовым файлом построчно. Файл реальный, грязно офромленный, с разрывами строк внутри тэгов.

Файл для задания 4-2 здесь.

Урок 5: простое применение cgi

Цель урока: ознакомиться с простейшими возможностями формирования html-страницы «на лету» средствами cgi-программирования.

Задание 5: Сформировать динамически на PERL простую html-страницу.

Примерный образец реализации такого задания может быть найден здесь.

Урок 6: использование модуля CGI.pm

Цель урока: ознакомиться с возможностями простого диалога клиента и сервера, используя возможности модуля CGI.pm

Задание 6: Создать в каталоге public_html html-страницу, содержащую форму, одно текстовое поле ввода, кнопку сброса и кнопку выполнения. Создать на PERL скрипт, который в теле динамически генерируемой страницы показывает то, что было введено в поле ввода исходной формы.

Примерный образец реализации такого задания может быть найден здесь. Образец страницы, использующий данный скрипт, и код самой страницы

Урок 7: без использования модуля CGI.pm

Цель урока: простой диалог клиента и сервера, не используя возможности модуля CGI.pm. Данная необходимость может возникнуть для достижения эффективности (каждый запуск модуля несет накладные расходы) или в простейших скриптах, где не нужны большие возможности модуля.

Задание 7: Повторить предыдущее задание, не используя модуль CGI.pm.

Примерный образец реализации такого задания может быть найден здесь. Образец страницы, использующий данный скрипт, и код самой страницы

Отметим, что cgi-скрипты можно писать на любом языке программирования, например, на Pascal, и работать это будет следующим образом: Образец страницы на паскале.

тестовая страничка на Баше

Урок 8: Работа с "ключиками" в CGI.pm

Скрипт ниже первым делом пытается считать ключик с именем «mucoo», и если ключик определен, то выводится его значение. Если ключик не определен, то он создается. Значение выбирается по текущему времени в секундах: $t = time(); а время жизни — один час. При этом выводится вся возможная информация о ключике с именем «mucoo». Действующий скрипт доступен здесь.

#!/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();
};