Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ответы к прис

.docx
Скачиваний:
5
Добавлен:
15.05.2015
Размер:
88.65 Кб
Скачать

1 Язык разметки документов HTML

HTML (HyperText Markup Language) – это язык, принятый в World Wide Web для создания и публикации Веб-страниц. HTML предоставляет авторам средства для: 1)включения в Веб-документы заголовков, текста, таблиц, списков, фотографий и т. п.;2)перехода к другим Веб-страницам посредством щелчка кнопки мыши по гипертекстовой ссылке;3) создания и заполнения форм для транзакций с удаленными службами, например, для поиска информации, бронирования билетов, оформления заказов на товары и т. п. 4)непосредственного включения в Веб-документы видеоклипов, звука и других внешних объектов. еб-страница формируется с помощью: 1) язык HTML используется для задания логической структуры документа (заголовки, абзацы, графические изображения и прочие объекты); 2)язык каскадных стилей CSS используется для задания способа отображения документа; 3)языки программирования сценариев (чаще всего JavaScript) используются для обеспечения его динамическое изменение в ответ на различные события.1) HTML — это теговый язык разметки документов. Любой документ на языке HTML представляет собой набор элементов, начало и конец каждого элемента обозначается спец пометками, называемыми тегами.

Элементы — это структуры, которые описывают отдельные составляющие HTML-документа. Элемент состоит из трех частей: начального тега, содержимого и конечного тега. Тег — это специальный текст, заключенный в угловые скобки "<H1>". Конечный тег </H1>. Некоторые элементы, такие, как BR (новая строка), не имеют конечного тега, поскольку не имеют содержимого.2)Атрибуты элемента определяют его свойства. Например, элемент IMG имеет атрибут src, указывающий расположение графического файла, и атрибут alt, задающий альтернативный.Атрибуты всегда включаются в начальный тег элемента и имеют вид: имя_атрибута ="значение_атрибута". Имена атрибутов могут быть набраны в любом регистре, но их значения могут зависеть от регистра. Мы для определенности всюду в дальнейшем пишем имена элементов прописными буквами, а именами атрибутов строчными. 3) HTML-документы могут содержать комментарии, которые не влияют на отображение документа, а только поясняют его содержимое при просмотре HTML-текста. Комментарии начинаются с символов "<!--", завершаются комментарий символами "-->",

2 Орг-я статических и динамических HTML страниц.

1) Стат страница страница выглядит всегда одинаково, не зависимо от действий пользователя 2) DHTML включает:

HTML,Каскадные таблицы стилей (Cascade Style Sheets – CSS) и Язык сценариев (JavaScript или VBScript). Эти три компонента DHTML связаны между собой объектной моделью документа (Document Object Model – DOM), являющейся, по сути, интерфейсом прикладного программирования (API). DOM связывает воедино три перечисленных компонента, придавая простому документу HTML новое качество, возможность динамического изменения своего содержимого без перезагрузки страницы. Динам реагируют на действия пользователя и изменяются. Динамика на веб страницах реализована при помощи скриптов, которые выполняются браузером. По способу создания документы делят опять на статические и динамические: стат наз-ют страницы, если они лежат на сервере в html виде. А дин. Наз-ют те, которые генерируются "на лету" по запросу браузера.Если ваш сайт содержит часто меняющийся контент (content - информация на сайте), то вам на помощь придут скрипты, выполняющиеся на сервере. И это ключевое отличие этих скриптов, от описанных ранее (тех, что написаны на JavaScript). Работает это следующим образом: 1) Браузер запрашивает у сервера документ 2)Сервер определяет, что документ является скриптом и запускает его на выполнение 3)Скрипт генерирует html страницу 4) Сервер отправляет сгенерированную страницу браузеру, так что тот и не догадывается, что на сервере отработал скрипт . Если адрес страницы заканчивается на .html или .htm, то это обычная статическая страница. Если же вы видите любое другое окончание, то это скорее всего скрипт. Скрипты на языке PHP имеют обычно расширение .php, на языке Perl - .pl, ASP - .aspx Если же адрес не содержит имени страницы, то сервер будет использовать документ заданный по умолчанию. сейчас набирает силу гибридная система - AJAX: Asyncronous JavaScript And XML Эта технология позволяет скриптам на JavaScript обращаться к какому либо скрипту на сервере и получать информацию с сервера. Это в свою очередь, дает пользователю гибкость и позволяет перезагружать только часть содержимого страницы, а не всю ее полностью (что значительно экономит трафик).

3 CGI-скрипты. Обработка данных, введенных в форме HTML.

CGI (Common Gateway Interface) является стандартом спецификаций форматов данных, которые браузеры, серверы и программы используют для обмена такой информацией, CGI-скрипт представляет собой просто программу, написанную практически на любом языке программирования (таком, как С/C++, Perl, TCL и др.), которая обрабатывает данные пользователя и при необходимости формирует ответ (путем создания документа HTML). Когда серверная программа вызывает CGI-скрипт, сервер должен выполнить несколько основных операций: 1)вызвать скрипт и обеспечить его необходимыми данными, посылаемыми от браузера скрипту; 2) снабдить скрипт значениями переменных окружения (environment variables), доступных скрипту; 3)обработать выход скрипта, в том числе обеспечить включение дополнительной заголовочной информации, необходимой для браузера, чтобы успешно интерпретировать данные скрипта. Метод GET: 1) Запрос типа isindex был разработан для передачи списка ключевых слов для поисковой машины. При использовании контейнера ISINDEX в начале документа по­является шаблон ввода ключевых слов. После ввода списка слов, раз­деленных пробелом, вызывается скрипт, который принимает список, разбирает его на отдельные слова и выполняет необходимую обработ­ку. Первоначально isindex был ориентирован на модуль, подключав­ший поисковую систему WAIS к серверу CERN. запрос присоединяет­ся к URL документа или скрипта после символа "?",в запросе пробел заменяется на символ "+". В методе GET запрос типа form-urlencoded является основной формой запроса. От запроса типа isindex он отличается форматом и способом передачи, точнее, кодировкой данных в теле HTTP-сообще­ния. Данные формы попадают в запрос, который расширяет URL скрипта в виде пар "имя_поля=значение&имя_поля=значение&." Метод POST: Запрос состоит из заголовка и тела(данных). Query_string пустая. Основное назначение метода POST ­– передача сравнительно боль­ших объемов данных от клиента к серверу. Применение этого метода оп­равдано при передаче сложных, состоящих из множества полей форм. GET: @pairs=split(“&”,$ENV{‘QUERY_STRING’}) ;foreach $pair (@pairs) {@var=split(“=”,$a,2); $pairs{$vars [0]=$vars[1]};}

POST: READ (STDRN, $ENV{‘QUERY_STRING’}, $ENV{‘CONTENT_LENGTH’});

4 Расширенные команды сервера

Расширеные команды сервера Server Side Include (SSI) – это набор команд, позволяющий включить в HTML-страницу информацию, недоступную средствами HTML, такую, как результат работы программ и скриптов, значения переменных окружения и статистику по файлам (размер, дата создания и др.). В случае с SSI браузер получает страницу в уже готовом виде. Включение происходит прямо на сервере. Для указания http-серверу, какие документы считать содержащими   SSI- команды, в конфигурационном файле Web-сервера Apache надо раскомментировать следующие строки:

AddType text/html .shtml AddHandler server-parsed .shtml

Кроме этого надо разрешить выполнение   SSI   в каталоге, в котором находятся файлы, содержащие расширенные команды сервера: Options Indexes Includes Http-сервер может исполнять следующие   SSI-команды (command): 1)echo используется для вывода значения переменной, указанной в качестве параметра, в том числе и переменных окружения HTTP. Команда echo имеет один тэг – var. <!--#echo var="REMOTE_ADDR"--> 2) include- для включения в Web-документ какого-либо тек­стового или HTML-файла<!--#include file(расположение отн тек каталога)|virtual(отн корня)="имя_файла"-->

3) count выводит число обращений к данному HTML-документу. <!--#count file(файл с i)="имя файла"--> 4) fsize вставляет размер указанного файла <!--#fsize file|virtual="имя_файла"--> 5) flastmod позволяет включать в документ информацию о том, когда данный файл последний раз обновлялся. <!--#flastmod file|virtual="имя_файла"--> 6) exec запускает внешнюю программу или cgi-скрипт <!--#exec cgi| cmd (внешняя)="имя_файла"--> 7) config для изменения формата результата выполнения ко­манд fsize и flastmod. Кроме того, ее можно использовать для изменения стандарт­ной реакции сервера на ошибку обработки SSI-команды. Команда имеет четыре тэга: sizefmt – изменение формата вывода размера файла. timefmt – устанавливает формат вывода даты и времени последнего об­новления файла. ernnsg – задает сообщение, выдаваемое сервером при ошибке обработки SSI-команды.onerr – задает действие, совершаемое сервером при ошибке обработки SSI-команды. 8) append для вывода некоторой информации в текстовый файл. <!--#append file="имя_ файла(куда выводим)" line="строка(что записываем в файл)"-->9) printenv выводит текущие значения всех переменных окружения, параметров не имеет. Практическое применение команда имеет только для отладки страницы, что очень важно, учитывая тот факт, что у каждого сервера свой набор переменных.10) set устанавливает новую переменную окружения и присваивает ей новое значение или изменяет значение существующей переменной окружения. <!--#set var="имя переменной" value="значение"--> 11) if/else применяется для управления выводом страницы по условию <!--#if expr="условие1" --> html-код, если "условие1" истинно <--#elif expr="условие2" --> html-код, если"условие2" истинно <--#else --> html-код, если все условия ложны <--#endif -->

5 ImageMap.

Карта изображений (англ. image map, иногда cенсор-ная карта) — это графический объект, содержащий специальные области (активные зоны), связанные с URL (Universal Resource Locator — универсальный локатор ресурса.Серверный вариант Необходимо, чтобы HTML-документ был размещен на сервере. Для каждой карты-изображения на сервере должен быть размещен файл, описывающий конфигурацию активных областей. При щелчке мышью в пределах изображения координаты места щелчка передаются браузером серверу, который обращается к конфигурационному файлу, являющемуся, по существу, поисковой таблицей активных областей. Результат поиска возвращается браузеру в виде URL-адреса или сообщения об отсутствии найденных активных областей, соответствующих указанному месту изображения<A HREF=MyImage.map><IMG SRC=MyImage.gif ISMAP></A> Клиентский вариант Чтобы включить поддержку карты для изображения, необходимо ввести дополнительный параметр в тэг IMG: <IMG SRC="url" USEMAP="url #map_name"> Параметр USEMAP указывает, в каком месте находится карта описываемого изображения. Карта изображения определяет, какому участку изображения какой URL соответствует. Карта изображения может находиться в том же документе, что и изображение, или в другом документе. Параметр map_name указывает имя карты для изображения, а предшествующий ему URL определяет местонахождение карты. Если данный URL отсутствует, то карта с указанным именем ищется в текущем документе.Рассмотрим синтаксис определения карты изображения:<MAP NAME="map_name"> <AREA [SHAPE=" shape "] COORDS="x,y,..." [HREF=" reference "] [NOHREF]> </MAP>Параметры:1) <MAP NAME="map_name">

Данный тэг определяет начало описания карты с именем map_name. 2)<AREA...> Описывает участок изображения и ставит ему в соответствие URL. SHAPEНеобязательный параметр, указывающий на форму определяемой области изображения. Может принимать значения: default - по умолчанию (обычно прямоугольник) rect - прямоугольник circle - круг

poly - многоугольник произвольной формы COORDS

Координаты в пикселах описываемой области. Для прямоугольника это четыре координаты левого верхнего и правого нижнего углов, для круга - три координаты (две - центр круга, третья - радиус). Для многоугольника это описание каждого угла в двух координатах - соответственно число координат равно удвоенному количеству углов. Координаты считаются с нуля, поэтому для описания области 100 на 100 используется описание: <AREA COORDS="0,0,99,99" ...> 3)HREF="url"Описание ссылки, действия по которой будут выполняться при щелчке мыши в заданной области. 4)NOHREF

Параметр, указывающий, что ссылка отсутствует для данного участка.

6 Синтаксис языка Perl

Perl разработан для обработки текстов. Особенностями яв-ся: 1) В качестве разделителей м use (пробел,таб, символ новой строки,возврат коретки,переход на новую страницу) 2) Perl- свободный язык 3) # символ комментария 4) Интерпрети рующий язык 5) Программу лучше разбивать на мелкие подпрограммы и use ссылки в главном документе. Синтаксис: 1) Perl имеет свободный формат 2)Комментарии начинаются с # 4)Программа состоит из объявлений и предложений 5) Объявления м находиться в любом месте 6) Подпрограммы м б загружены из отдельного файла с use предложения require или импортированы в текстовую об-ть . Простое предложение обязательно заканчивается символом ';' если только это не последнее предложение в блоке где ';' можно опустить. Заметьте, что существуют операторы такие как eval{} и do{}, которые выглядят как сложные предложения, но на самом деле это термы и требуют обязательного указания конца предложения.Любое простое предложение может содержать single модификатор перед ';'. Существуют следующие single модификаторы: if, unless, while,util. Модификаторы while и until вычисляются в начале предложения кроме блока do, который выполняется первым. Последовательность простых предложений, ограниченная функциональными ограничителями, называется блоком. В Perl это может быть целый файл, последовательность предложений в операторе eval{} или чаще всего это множество простых предложений, ограниченных круглыми скобками '{}'.

Существуют следующие виды сложных предложений:

if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK

LABEL while (EXPR) BLOCK LABEL while (EXPR) BLOCK continue BLOCK LABEL for (EXPR; EXPR; EXPR) BLOCK LABEL foreach VAR (LIST) BLOCK LABEL BLOCK continue BLOCK

Использование {} в BLOCK обязательно даже, если в BLOCK одно предложение.

В Perl реализован очень удобный механизм для написания документации в момент создания программы. Для этого применяются специальные POD операторы. Если в теле программы интерпретатор встречает оператор начинающийся с символа '=' например:=head набор станд процедур то пропускается все до слова '=cut'. Это удобно для включения длинных на несколько строк или страниц комментариев. Затем с помощью специальной программы pod можно отделить текст документации от текста программы.

7-8 Типы данных в Perl и Переменные

Perl-контекстнозависимый полиморфный язык для работы с текстами. Не сущ-ет типов строка, число и др. Имена переменных м содержать любые буквоцифровые символы(кроме пробела и таб). Типы переменных: 1) скаляр $var 2) массив скаляров @var 3) ассоциативный массив скаляров (hash) % var . Скалярные переменные используются для хранения одиночных значений. Они могут содержать числа, строки и ссылки на другие объекты. Перед именем скалярной переменной необхо димо ставить знак доллара '$'. При инициализации переменной интерпретатор автоматически относит переменную к одному из типов данных. Значение переменной присваивается с помощью оператора =:

$number=7; # целое число $number2=7.8; # вещественное число $string="Строка"; # Переменной Sstring присвоено значение Строка $string2='Строка'; # Переменной $string2 также присвоено значение Строка Perl в любой момент времени изменяет тип переменной в соответствии с данными, хранящимися в ней: $var="CTpoKa"; # строка

$var=7; # целое число В отличие от большинства языков программирования, в языке Perl нет способа определить, какой тип имеет скалярная переменная (целое число, вещественное число или строка).Массив является упорядоченным списком скаляров. Каждый элемент массива имеет порядковый индекс, с помощью которого к нему можно получить доступ. Нумерация элементов начинается с нуля, то есть первый элемент списка имеет индекс 0. Перед именем переменной-массива необходимо ставить знак '@', а для доступа к определенному элементу массива использовать знак '$', так как определенный элемент массива является скаляром . Многомерные массивы можно смоделировать, помещая в список ссылки на другие списки. @array = (1,2,3,4); # записали в массив @array четыре элемента print $array[2]; # напечатать третий элемент print @array[2,3]; # напечатать третий и четвертый элемент. # Здесь используется @, так как результат операции среза массива тоже является массивом. Хеш представляет собой ассоциативный массив, позволяющий ассоциировать строку (называемую ключ) со скаляром (значение). Строка называется ключом, а скаляр в хеш-таблице значением. Перед именем переменной-списка необходимо ставить знак процента '%', а для доступа к определенному элементу массива необходимо ставить знак '$'. Хеш -таблицу можно инициализировать массивом или списком, состоящим из неограниченного числа последовательностей (ключ, значение).%hash = ( 'cat' => 'kitten', # здесь => - это так называемая "длинная запятая", 'dog' => 'puppy', # в этом примере по функции полностью аналогичная обыкновенной , 'cow' => 'calf' ); print $hash{'cat'}; #Напечатает kitten print join("-", keys %hash) ; # Вывод всех ключей. Напечатает cat-dog-cow

print join("-", values %hash) ; # Вывод всех значений. Напечатает kitten-puppy-calf print join("-", %hash) ; # Напечатает cat-kitten-cow-calf-dog-puppy, так как в списковом контексте хэш автоматически разворачивается в список (ключ, значение). Так как ключи в хэше не сортируются, пары каждый раз будут выводиться в произвольном порядке.

9 Массивы в Perl

Массив— это нумерованный набор скалярных переменных. Переменная в массиве называется элементом массива, а ее позиция в массиве задается индексом. Индексация элементов массива начинается с 0, а не с 1. Это следует помнить. Общее количество элементов в массиве называется размером массива. Первым символом в названии массива всегда указывается символ @. Основным отличием хешей от массивов является возможность обращения к элементу хеша не по числовому индексу, а по индексу, состоящему из строки. Индексы хеша называются ключами, а сами хеши часто называют ассоциативными массивами. Первым символом в названии хеша всегда указывается символ %.Инициализация массива осуществляется следующими способами: 1)поэлементно: $Mass[0] = "Ноль"; $Mass[l] = "Один"; 2) указав все элементы массива сразу: @Mass = ("Ноль", "Один", "Два", "Три"); 3)задав диапазон значений: @Mass = (1..10); Print @Mass; # Выведет 12345678910 4)с помощью операции qw. В этом случае элементы указываются через

пробел: @Mass = qw(Ноль Один Два Три); print @Mass; # Выведет НольОдинДваТри Обращение к элементам массива осуществляется с помощью квадратных скобок, в которых указывается индекс элемента. Индексация элементов массива начинается с нуля: @Mass = ("Ноль", "Один", "Два", "Три"); $var = $Mass[l]; # Переменной $var будет присвоено значение "Один" Функция join преобразует массив в строку. Элементы добавляются через указанный разделитель: @Mass = ("Фамилия", "Имя", "Отчество", "Год рождения"); $str = join(" - ", @Mass); print "$str"; # $str = Фамилия — Имя — Отчество — Год рождения push (<массив>, <Элемент>) — добавляет элементы в конец массива: $Mass[0]="один"; $Mass[l]="два"; push(@Mass, "Три", "Четыре"); pop (<массив>) — удаляет последний элемент массива и возвращает его: $Mass[0]="один"; $Mass[l]="двa"; print pop(@Mass); # Выведет "Два"

Инициализация ассоциативного массива осуществляется следующими способами: 1) поэлементно:

$Mass{"один"} = 1; $Mass{'два"} = 2; $Mass{"Три"} = 3;

print $Mass{"Один"}; # Выведет число 1 Вместо квадратных скобок в ассоциативных массивах используются фигурные скобки. 2) указав все элементы массива сразу: %Mass = ("Один", 1, "Два", 2, "Три", 3);

print $Mass{'\I}Ba"}; # Выведет число 2 В этом случае мы указываем символ %, а не $ или @. 3)с помощью операции =>. Это позволяет сделать процесс более наглядным: %Mass = ("Один" => 1, "Два" => 2, "Три" => 3); print $Mass{"два"}; # Выведет число 2

Доступ к элементу ассоциативного массива осуществляется путем указания ключа в фигурных скобках: print $Mass{"два"};

10 Арифметические операторы Perl

Операторы позволяют произвести определенные действия с данными. Например, операторы присваивания служат для сохранения данных в переменной, математические операторы позволяют произвести арифметические вычисления, а оператор конкатенации строк используется для соединения двух строк в одну. Доступные операторы:

+ сложение: $z = $х + $у;

-вычитание: $z = $х - $у;

* — умножение: $z = $х * $у;

/ — деление: $z = $х/$у;

% — остаток от деления: $z = $х%$у;

** — возведение в степень: $z = $х**$у;

++ — оператор инкремента. Увеличивает значение переменной на I: $z++; # Эквивалентно $z =$z + 1;

-- —оператор декремента. Уменьшает значение переменной на 1: $z—; # Эквивалентно $z =$z - 1;

Операторы инкремента и декремента могут использоваться в постфиксной или префиксной формах: $z++; $z—; # Постфиксная форма

++$z; —$z; # Префиксная форма

При постфиксной форме ($z++) возвращается значение переменной перед операцией, а при префиксной форме (++$z) сначала производится операция и только потом возвращается значение.

11 Операторы сравнения и лог операторы Perl

Операторы сравнений

< -  левое значение численно меньше, чем правое

lt - левое значение (строчное) меньше, чем правое

>  левое значение численно больше, чем правое

gt  левое значение (строчное) больше , чем правое

<= - левое значение численно меньше или равно, чем правое

le -  левое значение (строчное) меньше или равно , чем правое

>= - если левое значение численно больше или равно , чем правое

ge - левое значение (строчное) больше или равно , чем правое

== - если левое значение численно равно правому

eg - левое значение (строчное) равно правому

!= - если левое значение численно не равно правому

ne - если левое значение (строчное) не равно правому

<=> - возвращает -1, если < ; 0, если = и 1, если > , применим к числам

cmr - возвращает -1 , если < ; 0 , если = и 1 , если > , применим к строкам

Можно несколько логических выражений объединить в одно большое с помощью следующих операторов:

&&(AND) — логическое И; I I(OR) — логическое ИЛИ.

($varl == $var2) && ($var2 != $var3)

($varl == $var2) | | ($var3 =*= $var4)

В первом случае выражение вернет true только в случае, если оба выражения вернут true. Второе выражение вернет true, если хотя бы одно из выражений вернет true.

12 Строковые опер-ры и оп-ры присваивания.

Поскольку Perl представляет собой язык для обработки текста, неудивительно, что в него включены дополнительные операторы для работы со строками. Ниже перечисляются операторы обработки строк: 1) . конкатенация строк $Z = "Строка1" . "Строка2";

# Переменная $Z будет содержать значение "Строка1Строка2" 2) х репликация $Str = "Привет" х 3;

print $Str; # выведет ПриветПриветПривет

3) ++ инкремент этот оператор работает только с латинскими буквами $Str = "b"; $Str++; print $Str, "<BR>"; # выведет с

= — присваивает переменной значение: $z = 5;

+= — увеличивает значение переменной на указанную величину: $z += 5;

-= — уменьшает значение переменной на указанную величину: $z -= 5;

*= — умножает значение переменной на указанную величину: $z *= 5;

/= — делит значение переменной на указанную величину: $z /= 5;

%=— делит значение переменной на указанную величину и возвращает остаток: $z %= 5;

**= — возводит значение переменной в указанную степень: $z **= 5;

13 Операторы работы со списками и с файлами.

Список — это набор скалярных значений

В состав операций для работы со списками входят следующие: 1) , конструктор списков 2) ..  оператор области 3) х оператор репликации

Оператор области возвращает в качестве значения последовательность целых чи­сел, которая начинается от левого операнда и продолжается до правого операнда включительно. Скрипты часто используют оператор области совместно с конст­руктором списков для создания списков. Например, следующее выражение использует оператор области для того, чтобы создать список под именем @ digits , который со­держит числа от нуля до девяти: @ digits = 0..9; # список (1,2,3,4,5,6,7,8,9)

Аналогичным образом, это выражение может использовать оператор области для создания области изменений индексов массива. Предположим, что список @ days содержит дни недели (начиная с воскресенья). В следующем выражении списку @weekend присваиваются значения, начиная от понедельника до пятницы:

@ weekend = @ days [1..5]; Наконец, следующее выражение использует два оператора области для создания списка шестнадцатиричных цифр:

@hex_digits = (0..9,a..f); Оператор репликации просто создает копии данного операнда указанное число раз.

Perl содержит обширный список операторов для работы с файлами. Имеется не менее 27 операторов, возвращающих специфическую информацию о файле, да­же не открывая его. Многие операторы языка Perl ориентированы на системы UNIX , но следующие операторы работают на любых системах: 1) – d проверяет наличие каталога 2) -е   определяет наличие файла 3) - s    определяет размер файла 4) - w определяет, можно ли писать в данный файл .Следующие два файловых оператора возвращают булево значение. Третий опе­ратор возвращает размер файла в байтах. Следующий текст иллюстрирует ис­пользование этих операторов:

if (-e,’perl.exe’) { print ‘File size is:’ –s ‘perl.exe’; } else { print ‘can\’ t find perl.exe\n’; } (-w ‘SomeFile’) || die “Cannot write to SomeFile\n”;

16 Циклы и ветвления

Циклы позволяют многократно выполнить одни и те же выражения.

1) оператор ветвления if …else

if (Лог выр-е) {Блок если истинно} else {Блок ложно}

2)Цикл for используется для выполнения выражений определенное число раз. for (Начальное значение; Условие;Приращение) {Выражения } Цикл выполняется до тех пор, пока <Условие> не вернет false. Если это не случится, цикл будет бесконечным.

3) Выполнение выражений в цикле while продолжается до тех пор, пока логическое выражение истинно. Имеет следующий формат:

<Начальное значение>; while (<Условие>) {

<Выражения>; <Приращение>; }

Цикл until продолжается до тех пор, пока логическое выражение ложно.

4) Выполнение выражений в цикле do...while продолжается до тех пор, пока логическое выражение истинно. Но в отличие от цикла while условие проверяется не в начале цикла, а в конце. <Начальное значение>; do {<Выражения>; <Приращение>;

} while (<Условие>);

15 Условные операторы

Условные операторы позволяют, в зависимости от значения логического выражения, выполнить отдельный участок программы или, наоборот, не выполнять его. 1)операторы сравнения (см. 11) 2)оператор ветвления if …else if (Лог выр-е>) { <Блок, если условие истинно>} else { <Блок, выполняемый, если все условия ложны>}

Один условный оператор можно вложить в другой. Более того, блока else может не быть совсем:

print "$var - Четное число" if ($var%2 == 0); 3) оп-р unless unless (<Лог.выр-е>) {<Блок, если условие ложно>} else { <Блок, если все условие истинно>

} 4) оператор ? <Логическое выражение> ? <Выражение если Истина> : <Выражение если Ложь>;// $var%2 == 0 ? print "$var - Четное число" : print "$var — Нечетное число";

23 Файловый ввод и вывод в perl

Perl специально разрабатывался для того, чтобы служить адекватным средством для чтения и записи в текстовые файлы. Тем не менее, как вы узнаете далее, Perl выполняет функции по произвольному доступу и вводу-выводу бинарных файлов. Операции по работе с файлами требуют указатель файла ( file handle ), который является переменной, соответствующей конкретному файлу. По умолчанию каж­дый скрипт на языке Perl имеет три стандартных указателя, которые Perl авто­матически открывает при запуске скрипта: STDJN , STDOUT , STDERR . Эти три стан­дартных указателя отвечают стандартным потокам STDIN , STDOUT , STDERR языка программирования С. Кроме того, скрипт языка Perl может открыть дополнительные указатели для других специфических файлов.Для того чтобы скрипт использовал файл, он должен вызвать функцию open . Она имеет следующий вид: open(FileHandle[, FileName])

Perl определяет режим ( mode ) открытия файла, основываясь на имени файла:« FILE » Открыть файл только для чтения «> FILE » Создать файл для записи

«+< FILE » Открыть файл для чтения/записи «+> FILE » Создать файл для чтения/записи «>> FILE » Открыть файл для добавления в его конец Если в вызове функции open опущено имя файла, то Perl подразумевает, что имя файла содержится в строковой переменной $ FileHandle . Когда скрипт завершил ис­пользование файла, он закрывает его: close ( FileHandle ); Использование функций open и close : open ( InFile , “ test . dat ”) || die ;    # открываем для чтения test . dat open(OutFile, “>test.dat”) || die; # создаём test.dat close(InFile); close(OutFile);

17 Подпрограммы

Функция (или процедура) — это фрагмент кода Perl, который можно вызвать из любого места программы. Функция описывается с помощью ключевого слова sub по следующей схеме: sub <Имя функции> {

<Тело функции> [return <3начение>] }

Функция должна иметь уникальное имя, состоящее из букв, цифр и символа подчеркивания. Имя функции не может начинаться с цифры. Название функции зависит от регистра символов. Между фигурными скобками располагаются выражения Perl. Кроме того, функция может возвращать значение в место вызова функции. Возвращаемое значение задается с помощью ключевого слова return. Если ключевое слово return не указано, то возвращается значение последнего выражения. Пример функции без параметров: sub f_print_OK {print "Сообщение при удачно выполненной операции"; } ' Пример функции с параметром: sub f_print { $msg = shift();print $msg;

} При вызове функции переданный параметр попадает в массив @_. Этот массив является параметром по умолчанию для большинства встроенных функций Perl. Для получения первого элемента массива мы используем функцию shift (). Вторую строку можно переписать так: $msg = shift (@_); В итоге мы выводим переданный параметр в окно Web-браузера с помощью оператора print. Данную функцию можно переписать одной строкой кода: sub f_print { print shift(); } Для импортирования подпрограмм из других модулей используйте:use модуль qw(подпрограмма1 подпрограмма2); Если подпрограммы описаны в отдельном файле, то в основной программе для их использования следует написать require “file_name.pl”.

18 Функции для обработки строк.

Основные функции для работы со строками:

1)Функция chop удаляет последний символ строки и возвращает удаленный символ. Она имеет следующий формат: $character = chop(Str); 2)Substr() — возвращает подстроку указанной длины, начиная с заданной позиции. Если длина не указана, то возвращается подстрока, начиная с заданной позиции и до конца строки. Функция имеет следующий формат: substr(<Строка>, <Начальная позиция>, [<Длина>]/ [<Строка для замены>]) ;$str = "Строка";substr($str, 4, "йка");print "$str"; # Выведет "Стройка" 3) Split() — разделяет строку на подстроки по указанному разделителю и добавляет их в массив. Функция позволяет использовать регулярные выражения. Имеет следующий формат: split(/ Разделите ль>/, <Строка>, <Лимит>);4)Функция join соединяет список элементов в строку, разделяя каждый элемент за­данным символом. @Mass = ("Фамилия", "Имя", "Отчество", "Год рождения");$str = join(" - ", @Mass);

print "$str"; # $str = Фамилия — Имя — Отчество — Год рождения 5)Функция length возвращает число символов в строке. Она имеет следующий формат:  $len = length($t);

6)index ()— ищет подстроку в строке. Возвращает номер позиции, с которой начинается вхождение подстроки в строку. Если подстроки нет в строке, то функция возвращает значение -1. Функция зависит от регистра символов. Имеет следующий формат: index(<Строка>, <Подстрока>, [<Начальная позиция поиска>]) Если начальная позиция не указана, то поиск будет производиться с начала строки 7) Функции lc(), uc (проп), Icfirst(), ucfirst()предназначены для преобразования строчных букв в прописные и наоборот.

19 Функции для обработки списков

1) Grep Вычисляет блок операторов БЛОК или ВЫРАЖЕ НИЕ для всех элементов списка, заданного параметром СПИСОК, локально устанавливая значение специальной переменной <>$_ равным значению элемента списка. В списковом контексте возвращается список элементов, для которых ВЫРАЖЕНИЕ вычисляется равным Истина. В скалярном контексте - количество раз, когда ВЫРАЖЕ НИЕ вычислялось равным Истина. grep EXPR, LIST grep BLOCK LIST my @list = qw(письма и телеграммы сгорели очень быстро и дотла были их килограммы теперь осталась только лишь зола);my @result = grep s/и/i/, @list;пiсьма i телеграммы сгорелi очень быстро i дотла былi iх кiлограммы теперь осталась только лiшь зола 2)Join Соединяет отдельные строковые элементы списка параметра СПИСОК в одну строку, вставляя между ними разделитель, равный значению параметра ВЫРАЖЕНИЕ и возвращает полученную строку. 3)Map

Вычисляет блок операторов БЛОК или ВЫРАЖЕНИЕ для всех элементов списка, заданного параметром СПИСОК, локально устанавливая значение специальной переменной $_ равным значению элемента списка. Возвращает список элементов, составленный из результатов указанных вычислений для каждого элемента заданного списка. Операторы из БЛОК и ВЫРАЖЕНИЕ вычисляются в списковом контексте. 4) Reverse Ф-я reverse реверсирует элементы списка. Она имеет следующий формат: @ new _ list = reverse (@ List );           

Функция reverse реверсирует список и возвращает новый результирующий список. @ list = reverse (1..5); # 5,4,3,2,1 @ list = reverse (@ list ); #1,2,3,4,5 5)Sort Функция sort размещает элементы в списке, упорядочивая их в соответствии с порядковыми номерами символов в таблице ASCII-кодов. Так же как и функ­ция reverse , функция sort возвращает в качестве значения новый список и не воз­действует на исходный список. @ list = sort (1,5,2,3,4); # 1,2,3,4,5 @ list = sort (1,2,10); # 1,10,2 сортировка в ASCII

20Функции для работы с массивами

1)Скрипты языка Perl используют фикции push и pop для того, чтобы добавлять и удалять элементы с конца массива. Иными словами, функции push и pop позволя­ют скриптам выполнять операции со стеком по принципу: последним вошел, пер­вым вышел. Функция push имеет следующий формат: push(@ARRAY, LIST); Исп-е функции push : @ list = (); push (@ list ,10,20);                    # @ list теперь (10,20) push (@ list ,1..3); # @ list теперь (10,20,1,2,3) В противоположность этому функция pop удаляет элемент, который был встав­лен в стек последним и возвращает значение этого элемента. Функция pop имеет следующий формат: $value = pop(@ARRAY);

Использование функции pop :# Возьмём @ list из предыдущего примера print pop (@ list ); # Выведет 3       print pop (@ list ); # Выведет 2  # Теперь @ list (10,20)

2)Функция shift удаляет и возвращает элемент из начала массива. Эта функция ана­логична функции pop с тем только отличием, что работает от начала массива по принципу FIFO («первым вошел, первым вышел»). $value = shift(@ARRAY); 3) Функция unshift добавляет один или больше элементов к началу массива. unshift(@Array, List); # @ list   = ()unshift (@ list ,5,10,20);             # @ list (5,10,20) unshift (@ list , 1..3); # @ list (1,2,3,5,10,20)

4)Функция scalar определяет число элементов в списке.

Rsult = scalar(List); 5) Функция splice Удаляет из массива заданное КОЛИЧЕСТВО элементов, начиная с элемента, определенного параметром НОМЕР. В случае задания параметра СПИСОК заменяет указанные элементы элемента списка. В списковом контексте возвращает удаленные элементы; в скалярном контексте - последний удаленный элемент. Если параметр КОЛИЧЕСТВО не задан, то удаляются все элементы после элемента с номером, определенным параметром НОМЕР.

splice МАССИВ, НОМЕР[, КОЛИЧЕСТВО[, СПИСОК]]

21 Ф-и обработки ассоциативных массивов.

Ассоциативные массивы — это такие массивы, у которых индексом является не числовая величина, а, например, имя. В языке Perl имеется несколь­ко встроенных функций, которые упрощают обработку скриптами ассоциативных массивов.1) Функ-я keys возвращает значения ключей, которые отвечают ассоциативному массиву. Она имеет следующий формат: @key_list = keys(%Array); 2)Функция values возвращает обычный массив, состоящий из значений ассоциативного массива. @value_list = values(%Array)

Функция values возвращает массив значений ассоциативного массива в виде регу­лярного списка. 3)Функция each осуществляет итерации элементов в ассоциативном массиве. Она имеет следующий формат: @key_values = each(%Array); содержат пару ключ—значение. 4) Функция delete удаляет эл-ты ассоциативного массива. Она имеет следующий формат: Delete $Array{Key} 5)existsПроверяет, существует ли в хеш-массиве заданный ключ. Если существует, то возвращает булево значение Истина, иначе - Ложь. exists ВЫРАЖЕНИЕ

26 Функции работы с каталогами в Perl.

Perl предоставляет не только широкий набор функций для обработки файлов, но также несколько очень удобных функций для сканирования каталогов.

Открытие, чтение и закрытие каталогов:

Скрипты на языке Perl позволяют открывать и читать содержимое файлов. Точ­но так же эти скрипты открывают каталоги и читают имена содержащихся в них слайдов. Для открытия каталога скрипты используют функцию opendir , передавая указатель каталога и путь к нему. Для чтения списка файлов, содержащихся в каталоге, скрипт использует функцию readdir . Наконец, для закрытия каталога используется функция closedir . Следующий фрагмент программы иллюстрирует использование функции readdir для того, чтобы вывести на экран список файлов в текущем каталоге:

opendir(Dir, $INC[2]) || die; while ($file = readdir(Dir))         { print “$file \n” } closedir ( Dir ); В этом фрагменте используется переменная $ INC [2 J для доступа к текущему каталогу. Изменяя $ INC [2] на $ ARGV [0], скрипт выводит на экран список файлов, содержащихся в каталоге, который вы указали в командной строке.

14 Простые и составные операторы

Простым выражением называется любая допустимая комбинация операторов и опе­рандов. В языке Perl оператором является выражение, заканчивающееся точкой с запятой.. Следующий текст иллю­стрирует простой оператор присваивания на языке Perl : $Title = ‘Web Programming’; Скрипты Perl могут содержать блоки операторов, или составные операторы, которые помещаются в фигурные скобки ({}), как показано ниже:

{  # Операторы # Другой блок операторов   }

Блок - последовательность операторов, определяющая область видимости переменных. В программе блок обычно ограничен фигурными скобками {...}. Интерпретатор рассматривает БЛОК как один оператор, вычисляемым значением которого является значение последнего выполненного оператора блока.

41 MySQL. Открытие таблиц

1) Выбор БД - Show databases; (просмотр существующих баз) - Create database base_name; (при необходимости создаем новую базу) - use base_name (выбираем базу для работы)

2) Создание таблицы CREATE TABLE TABLE1 (

-> NUMBER INTEGER NOT NULL AUTO_INCREMENT, -> FAMALY VARCHAR(35),

-> NAME VARCHAR(30), -> PRIMARY KEY (NUMBER) -> ); 3) Просмотр структуры таблицы

describe TABLE1; 4)Загрузка данных в таблицу с помощью запроса INSERT 5) Просмотр записей с помощью запроса SELECT

Select * from table1;

24 Построч и блок опер-и с файлами в Perl

Простейшим способом для чтения скриптом строки из файла служит использование оператора <FILEHANDLE'>. В языке Perl указатель файла, окруженный треугольными скобками, становится символом ввода (input-symbol). Например, следующий фрагмент программы иллюстрирует использование символа ввода для чтения и вывода на экран содержимого файла Test.dat. open(InFile, "Test.dat") || die; while ($line = <InFile>){ print $line; # Выведет строку из файла } close(InFile);

Когда символ ввода достигает конца файла, он возвращает значение false, которое в данном случае заканчивает выполнение цикла while. Существует специальный (пустой) символ ввода, обозначаемый <>, который имеет весьма специальное, но полезное применение. В первый раз, когда скрипт использует пустой символ ввода<>, он анализирует аргументы командной строки. Если строка @ARGVявляется пустой, то входной символ <> читает из STDIN. Если вместо того @ARGV не пуста, то Perl открывает первый из файлов, указанных в переменной @ARGV, и читает содержимое файла. Когда Per заканчивает обработку одного файла, он приступает к следующему.После того как скрипт прочитал все файлы, символ <> возвращает значение false. Скрипты языка Perl также могут использовать символ ввода для чтения всего содержимого файла в массив так, что каждая строка файла становится элементом массива. Например, следующая инструкция читает из файла STDIN в массив @lines: @lines = <STDIN>;

Запись данных в файл также достаточно проста. Фактически выэто делали всякий раз, когда использовали функцию print. Полный формат функции print имеет следующий вид: print [FileHandle] List; Если функция print не получает в качестве аргумента указателя файла, то она посылает вывод в STDOUT. Следующий фрагмент программы иллюстрирует использование функции print для добавления данных в выходной файл: open(LogFile, '>>logfile.dat') || die; ($m, $d, $y) = (localtime(time)) [4,3,5]; print LogFile "Captain's log, Stardate ++m$/$d/$y\n"; close(LogFile);Примечание: Указатель файла и выходной список не разделяются запятой.

ЧТЕНИЕ И ЗАПИСЬ БЛОКОВ ДАННЫХ

Программисты часто рассматривают текстовые файлы как текстовые потоки просто потому, что один символ следует за другим до маркера конца файла. Если скрипт должен работать с файлом, который ориентирован на работу с блоками, а не потоками, то скрипт может использовать функции sysread и syswrite для обработки фиксированных блоков данных. Функции sysread и syswrite имеют следующие форматы: $result = sysread(FileHandle, $Var, Length[, Offset]); $result = syswrite(FileHandle, $Var, Length[, Offset]);

Если в вызове функций указывается сдвиг от начала файла(Offset), то функции выполнят поиск места, с которого они начнут операции ввода/вывода. Функции sysread и syswrite обе передают данные, используя скалярную переменную строкового типа. Поскольку функции обрабатывают фиксированные блоки памяти, то данные могут содержать бинарные значения, включая нули и маркеры конца файла. Если в вызове функции указывается сдвиг от начала файла (Offset), то функция выполняет поиск места в файле, с которого начинает выполнять операции ввода/вывода. Если вы работаете с блоками данных, то скрипты могут также использовать следующие функции ввода/вывода:

$result = seek(FileHandle, Position, Base);

$result = tell(FileHandle);

$result = eof(FileHandle);

Функция seek работает в точности так же, как fseek - функция библиотеки времени выполнения языка С. Параметр Position задает позицию относительно начала отсчета, которая в свою очередь задается параметром Base следующим образом:

- 0 Поиск от начала файлов

- 1 Поиск от текущей позиции

- 2 Поиск от конца файла

Функция tell языка Perl работает в точности так же, как фикция ftell библиотеки времени выполнения языка С. Эта функция возвращает текущую позицию в файле, с которой выполняются операции чтения или записи. Наконец, функция eof, так же как и функция feof языка С, возвращает значение <истинно> или <ложно>, которое скрипт может использовать для определения достижения конца файла.

25 Обработка бинарных данных в Perl.

Хотя Perl ориентирован в первую очередь на обработку текста, он также может обрабатывать бинарные данные. Скрипты могут перемещать бинарные данные частями, используя строковые переменные, и выполнять байтовые операции вво­да/вывода, используя функции sysread и syswrite . Однако для того, чтобы выпол­нить что-нибудь «полезное» с данными, скрипт вынужден конвертировать данные в свои «родные» скалярные форматы.

Когда скрипт на языке Perl читает блок бинарных данных, используя функцию sysread , он помещает эти бинарные данные в скалярную строковую переменную. Perl не заботится о том, что это за данные, содержат ли они нули или значения, не являю­щиеся ASCII-символами. В пределах символьной строки Perl принимает байты как байты. В отличие от языка С, Perl не использует строк, оканчивающихся нуль-символом. Если данные соответствуют кодовой таблице ASCII , то скрипт может их обрабатывать, как любой текст. Но если данные представляют собой бинарные величины, то скрипт обязан распаковать их перед тем, как Perl сможет обработать эти данные. Распаковка строк бинарных данных в переменные языка perlДля того чтобы скрипт получил доступ к бинарным данным, он должен распако­вать их, перейдя в свой скалярный формат. Скрипты Perl распаковывают дан­ные, используя функцию unpack , которая имеет следующий формат: $result = unpack(Template, Expression); Expression является обычной строковой переменной, которая содержит бинарные данные, прочитанные функцией sysread , но может быть также выражением, кото­рое необходимо интерпретировать как строку. Template представляет собой сим­вольную строку-шаблон, описывающую, как интерпретировать значения в операнде Expression . Следующий фрагмент программы иллюстрирует использование функ­ции unpack : ($ r , $ g , $ b ) = unpack (“ C 3”, $ color ); # распакует в 3 символа @ longwords = unpack (“ L *”, $ data );  #   распакует в список длинных слов @stuff = unpack(“S2L”, $bin); # распакует в 2 shorts и long Каждый символ шаблона может сопровождаться числом, указывающим, сколько раз использовать этот символ. Если вместо числа стоит звездочка (*), то опера­ция будет выполняться для всех остающихся данных в строке. Если число не по­ставлено, то она выполняется однократно. Скрипт может поместить любое число символов шаблона в строку Template .a  - Строка ASCII без нулевого символа А -  Строка ASCII без нулевого символа b - Битовая строка (младший бит идет первым)

В - Битовая строка (старший бит идет первым) с - Одно байтовый символ со знаком С- Однобайтовый символ без знака s- Короткое целое со знаком S - Короткое целое без знака Для вывода бинарных данных скрипт должен запаковать скалярные величины в строки бинарных символов. Для этого используется функция pack , формат кото­рой указан ниже: $result = pack(Template, List);

Следующий фрагмент программы иллюстрирует использование функции pack : $color = pack(“C3”, $r, $g, $b); $data = pack(“L*”, @longword); $bin = pack(“S2L”, @stuff); Функция pack использует те же самые символы шаблона, что и функция unpack , за исключением некоторых символов.

27 Форматированный вывод в Perl.

Форматированный ввод/вывод – это совокупность операций, обеспечивающая ввод/вывод высокого уровня переменных с применением определённого формата ввода/вывода.Perl обес­печивает специальные переменные, которые влияют на работу функции print (применяет формат по умолчанию). $,-  Разделитель для элементов печати $" - Разделитель элементов списка при интерполяции строки $\  - Разделитель для выходных записей $# - Форматирование числового выхода (по умолчанию ‘%.20 g ’) Для использования этих специальных переменных достаточно просто присвоить им значения, которые вы хотите. Например, в следующем фрагменте программы используется переменная $, для того, чтобы задать сепаратор между элементами печати: $, = ‘*’; @ list = 1..10; print @ list ;    # Выведет 1*2*3*4*5*6*7*8*9*10 Форматированный вывод данных функцией printfPerl имеет функции printf и sprintf . Они имеют следующий формат: $result = printf([FileHandle] Format, List); $result = sprintf(Format, List); По умолчанию функция printf посылает форматированный выход на стандартный выход STDIO , а функция sprintf возвращает форматированную строку.

Использование функций printf и sprintf .

$precision = 2;

$pi = 3.1415;

printf(”%.2f\n”, $pi);                            # выведет 3.14

printf(“%.${precision}f”, $pi);             # выведет 3.14

printfВыводит форматированный список строковых данных в файл, ассоциированный с дескриптом, заданный параметром ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDIN или текущий файл, установленный функцией select(). Параметр ФОРМАТ представляет строку, содержащую символы форматирования, полностью совпадающие с символами форматирования системной функцией Unix printf(3).

printf ДЕСКРИПТОР ФОРМАТ, СПИСОК printf ФОРМАТ, СПИСОК print print ДЕСКРИПТОР СПИСОК; Здесь ДЕСКРИПТОР представляет дескриптор файла, в который функция выводит строковые данные, представленные списком вывода СПИСОК. Он может состоять из переменных, элементов массивов и выражений, вычисляемых как строковые данные. Дескриптор файла создается функцией open(). Он может быть опущен, и в этом случае вывод осуществляется в стандартный файл вывода STDOUT, если только функцией select() не выбран другой файл вывода по умолчанию. Обычное стандартное устройство вывода - экран монитора компьютера.

Функция print при выводе своего списка не завершает его символом новой строки "n". Это означает, что следующая функция print начнет вывод на экран непосредственно после последнего выведенного предыдущей функцией print символа. Если такое поведение не желательно, то следует список вывода каждой функции print явно завершать строкой, содержащей символ новой строки, или включать его последним символом последнего элемента списка вывода.

28Расположение и вызов CGI-скр в различных ОС

Perl представляет собой эффективное средство для создания надежных скриптов без написания кодов большого объёма.Вызов cgi-скрипта:На UNIX-системах программисты могут исполнять скрипты, написанные на язы­ке Perl , как выполнимые файлы. Иными словами, для них нет необходимости де­лать что-то специальное для вызова скрипта. На системах, основанных на DOS или Windows , некоторые серверы не исполняют скрипты Perl автоматически. В этом случае вам придется писать пакетный файл, который вызывает команды Perl для запуска скрипта. Для некоторых систем придется подробнее познакомиться с документацией по вашему НТ T Р-серверу относительно запуска скриптов Perl .

Большинство серверов HTTP предполагает, что скрипты CGI находятся в каталоге под названием cgi - bin . В этом случае можно вызвать скрипт с помощью URL , по­добно следующему: http :// your - domain / cgi - bin / your - script Примечание: В URL задан каталог cgi-bin, но в действительности скрипт может находиться где угодно в системе. Вы должны определить его расположение при установке сервера HTTP . Вызов сgi-скрипта в системе unix: Если вы поместили ваш скрипт в каталог cgi-bin и сделали его выполнимым, то поль­зователь может вызвать скрипт, непосредственно используя URL. Однако необходи­мо выполнить несколько шагов. В первую очередь, в начало скрипта необходимо по­местить строку, которая идентифицирует файл как программу на языке Perl : #!/usr/bin/perl  Примечание: Вы должны будете указать в этой строке путь, зависящий

от того, где установлен Perl на вашей системе.

Далее необходимо сделать скрипт выполнимым, используя команду chmod : chmod   +x your-srcipt

Вызов скрипта на языке perl из dos и windows:

В DOS или Windows скрипты Perl сами по себе не являются выполнимыми само­стоятельными программами. Вместо этого необходимо запустить исполнимую программу PERL . EXE , включая имя скрипта на языке Perl в командной строке. Для упрощения этого процесса можно создать ВАТ-файл для каждого вашего скрип­та, который запускает PERL. ЕХЕ с соответствующим файлом, содержащим скрипт. Например, предположим, что ваш ВАТ-файл HELLO .ВАТ содержит следующие команды: @echo off   perl Hello.pl %1 %2 %3 %4 %5 %6 %7 %8 %9

Также предположим, что скрипт Perl Hello . PL содержит следующие инструкции:

print “Hello, args are ‘@ARGV’\n”;

Как можно видеть, ВАТ-файл просто запускает программу PERL . EXE с указани­ем скрипта Hello . PL в качестве входной командной строки.

Если ваша программа-сервер нуждается в ВАТ-файле для выполнения скрипта на языке Perl , вы должны поместить ВАТ-файл (такой как HELLO .ВАТ) в каталог cgi - bin и туда же — скрипт Perl ( Hello . PL ).

43 Интерфейс MySQL с Perl.

В Perl существует единый интерфейс для всех баз данных dbi. Для доступа к конкретной базе данных используется соответствующий драйвер dbd. $dbh = DBI->connect ($data_source, $username, $password) Сonnect устанавливает соединение с базой данных, или сеанс, в соответствии с заданным источником данных $data_source. Если соединение успешно установлено, возвращается объект дескриптора базы данных. Для закрытия соединения используйте метод $dbh->disconnect . Если попытка установления соединения заканчивается неудачей, метод возвращает undef и устанавливает $DBI::err и $DBI::errstr. С помощью DBI можно осуществлять множественные одновременные соединения с несколькими базами данных через несколько драйверов. Нужно лишь выполнить вызов connect для каждой из баз данных и сохранить по экземпляру каждого возвращенного дескриптора базы данных. Значение $data_source должно начинаться с dbi:driver_name . При этом driver_name указывает на драйвер, который должен использоваться для установления соединения. Пример значений $data_source: dbi::DriverName::database=database_name; host=hostname;port=port Единственное требование DBI состоит в том, чтобы все данные располагались в одной строке. use DBI; my $dbh=DBI->connect( “DBI:mysql: host =10.10.146.7;database=IS1_02”, “IS1_02”, “IS”); if (!$db) { print "He удалось установить подключение к базе данных."; print "<BR>$DBI::err"; # Номер ошибки print "<BR>$DBI::errstr"; # Текст ошибки exit();}$dbh->disconnect(); Выполнение запросов:

Метод prepare () используется для подготовки запроса. Исполнение подготовленного запроса осуществляется методом execute(). Метод prepare() имеет следующий формат: <ID результата> = <Идентификатор>->рrераrе(<SQL-3anpoc>); <ID результата>->ехесutе () ;

Для удаления идентификатора результата применяется метод finish (): <ID результата>->finish();$sth=$dbh->prepare("select *from kurs");

$sth->execute;

45 Установка DBI-DBD для СУБД PostgreSQL.

Драйверы DBD-Pg работают с DBI версии не ниже 1.52. и с версией языка Perl не ниже чем 5.6.1. Во-вторых, в поставке Perl v.5.6.1 требуют обновления компоненты Test::Harness до версии 2.03 и Test::Simple (Test::More) до версии 0.61.Список файлов, необходимых для установки и тестирования системы приведен ниже. perl-5.6.1.tar.gz.

Test-Harness-2.52.tar.gz. Test-Simple-0.70.tar.gz.

DBI-1.52.tar.gz. DBD-Pg-1.49.tar.gz. Apache_1.3.41.tar.gz.

test.pl. \Test-22\*.*

Установка DBI. Файл представляет собой архив с упакованным пакетом программ в виде исходных текстов и скриптов, используемых для инсталляции DBI. Перед инсталляцией указанный файл “DBI-1.52.tar.gz” необходимо распаковать. Для этого в программе “mc” достаточно скопировать содержимое архива во временный каталог, например “/home/Install/MySQL”. В полученном каталоге /DBI-1.52 имеется файл README с инструкцией по установке.

[root@lis MySQL]# perl Makefile.PL

[root@lis MySQL]# make

[root@lis MySQL]# make test

[root@lis MySQL]# make install

После первой команды будут выданы сообщения о возможности поддержки устанавливаемым DBI некоторых новых функций текущей версией Perl, сообщения о ходе работы программы Makefile, а в конце – инструкция по дальнейшему ходу установки соответствующему второй, третьей и четвертой командам из приведенного выше списка. После выполнения последней команды инсталляция завершается и интерфейс DBI готов к работе. После этого каталог /DBI-1.37 может быть удален.

Установка драйвера DBD для СУБД PostgreSQL.

Методика установки этого драйвера полностью аналогична установке DBI интерфейса, описанной выше за исключением того, что перед выполнением процедуры компиляции необходимо установить значения переменных окружения POSTGRES_HOME, POSTGRES_INCLUDE, POSTGRES_LIB:

export POSTGRES_HOME=”/usr/local/pgsql”

export POSTGRES_INCLUDE=”/usr/local/pgsql/include”

export POSTGRES_LIB=”/usr/local/pgsql/lib -lssl”

44 Установка DBI-DBD для СУБД MySQL.

Установка DBI. К настоящему времени для инсталляции доступна версия DBI-1.37. На сервере АиС файл “DBI-1.37.tar.gz” находится в папке “//aisnt:/home/student/kurs5/PrIS/DBI-DBD-MySQL”. Дополнительно копия этого файла расположена на FTP сервере по адресу ftp://ais.khstu.ru/incoming/linux. Файл представляет собой архив с упакованным пакетом программ в виде исходных текстов и скриптов, используемых для инсталляции DBI. Перед инсталляцией указанный файл “DBI-1.37.tar.gz” необходимо распаковать. Для этого в программе “mc” достаточно скопировать содержимое архива во временный каталог, например “/home/Install/MySQL”. В полученном каталоге /DBI-1.37 имеется файл README с инструкцией по установке. В соответствии с этой инструкцией в системе должен быть установлен пакет ActivePerl версии не ниже 5.0, а последовательность установки должна быть следующей:

[root@lis MySQL]# perl Makefile.PL

[root@lis MySQL]# make

[root@lis MySQL]# make test

[root@lis MySQL]# make install

После первой команды будут выданы сообщения о возможности поддержки устанавливаемым DBI некоторых новых функций текущей версией Perl, сообщения о ходе работы программы Makefile, а в конце – инструкция по дальнейшему ходу установки соответствующему второй, третьей и четвертой командам из приведенного выше списка. После выполнения последней команды инсталляция завершается и интерфейс DBI готов к работе. После этого каталог /DBI-1.37 может быть удален.

Установка драйвера DBD для MySQL. Для интерфейса DBI версии 1.37 следует устанавливать драйвер DBD версии 2.1027. Файл DBD-mysql-2.1027.tar.gz находится в папке “//aisnt:/home/student/kurs5/PrIS/DBI-DBD-MySQL” файл-сервера кафедры АиС. Дополнительно копия этого драйвера расположена на FTP сервере по адресу ftp://ais.khstu.ru/incoming/linux. Методика установки этого драйвера полностью аналогична установке DBI интерфейса, описанной в предыдущем разделе.

42. Типы данных MySQL.

Числовые типы даных:

TINYINT[ (<длина в символах>) ] — целые числа от -128 до 127 или от 0 до 255. Занимает 1 байт;

BOOL или BOOLEAN— либо 0, либо 1. Синоним для tinyint(I). Занимает 1 байт; SMALLINT[ (<длина в символах>) ] — целые числа от -32 768 до 32 767 или от 0 до 65 535. Занимает 2 байта; MEDIUMINT[ (<длина в символах>) ]— целые числа от -8 388 608 до 8 388 607 или от 0 до 16 777 215. Занимает 3 байта;

INT [(<длина в символах>) ]—целое 4-байтовое число; INTEGER [ (<Длина в символах>) ] —синоним для INT; BIGINT[ (<длина в символах>) ]—целое 8-байтовое число; FLOAT[(<Длина в символах>, <Количество знаков после запятой>)]— вещественные числа ±1.175494351Е-38±3.402823466Е+38. Занимает 4 байта;

DOUBLE[(<Длина в символах>, <Количество знаков после запятой>)]— вещественные числа двойной точности. Занимает 8 байтов; REAL синоним для DOUBLE;Строковые типы:Текстовые типы:

CHAR(<длина строки>) [BINARY] — строки фиксированной длины до 255 символов. Строки будут дополняться пробелами до максимальной длины, независимо от размеров строки;

VARCHAR(<длина строки>) [binary] — строки переменной длины до 65 535 символов (до версии 5.0.3 только до 255 символов). Текстовый тип можно превратить в бинарный, указав модификатор binary;

TINYTEXT— строка до 255 символов; TEXT — строка до 65 535 символов; MEDIUMTEXT — строка до 16 777 215 символов; LONGTEXT — строка до 4 294 967 295 символов. При поиске в текстовых полях регистр символов не учитывается.

Бинарные типы: TINYBLOB — строка до 255 символов; BLOB — строка до 65 535 символов;

MEDIUMBLOB — строка до 16 777 215 символов;

LONGBLOB— строка до 4 294 967 295 символов.

При поиске в бинарных полях учитывается регистр символовПеречисления и множества: SET (‘Значение1’, 'Значение2’, ...) — поле может содержать несколько значений из перечисленных. Может быть указано до 64 значений; ENUM (' Значение1’, ' Значение2 ', . . . ) 1эполе может содержать лишь одно из перечисленных значений или null. Может быть указано до 65 535 значений.

Дата и время: DATE — дата в формате гггг-мм-дц;

TIME — время в формате чч:мм:сс;

DATETIME — дата и время в формате гггг-мм-дц чч :мм: сс; YEAR[ (214) ] — год в двух- или четырехсимвольном формате; TIMESTAMP— дата и время в формате timestamp. От 4970-01-01 00:00:00' до 2037 г.

31 Типы данных БД PostgreSQL

Числовые типы

Smallint -короткое 2-х байтовое целое integer-обычное 4-х байтовое целое bigint-большое 8-байтовое целое

decimal-дробное с фиксированной точкой numeric-дробное с фиксированной точкой real-дробное с плавающей точкой double precision-дробное с плавающей точкой двойной точности serial-целое с автоувеличением bigserial-большое целое с автоувеличениемДенежные типы money -для хранения денежных значенийСимвольные типы

character varying(n), varchar(n)-строка переменной длины с ограничением character(n), char(n)-строка фиксированной длины text-строка переменной неограниченной длины Бинарные (двоичные) типы

bytea-бинарная строка переменной длины Дата и время

timestamp [ (p) ] [ без часового пояса ]- дата и время

interval [ (p) ]-интервал времени Логические типы

boolean TRUE или FALSE Битовые строки

bit [ (n) ]-битовая строка фиксированной длины

bit varying [ (n) ]-битовая строка переменной длины

С помощью команды CREATE TYPE пользователи могут создавать новые типы данных для своих нужд.

39. СУБД MySQL. Основные характеристики и особенности

MySQL свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems. MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL(лицензия на свободное программное обеспечение). По условиям GPL, если какая-либо программа включает исходные коды MySQL, то она тоже должна распространяться по лицензии GPL. Предусмотрена коммерческая лицензия, которая также обеспечивает качественную сервисную поддержку. Основные характеристики: 1)СУБД реляционного типа.2)Написан на я зыках С иC++.3)Распространяется пол лицензией GPL4)Протестирован на широком спектре различных компиляторов.5)Работает на множестве различных платформ.6)Доступны API-интерфейсы для С,C++,Eiffel,Java,Perl,PHP,Python,Ruby и Tel.7)Полностью многопоточный с использованием потоков ядра. Может работать в многопроцессорных системах.8)Обеспечивает транзакционный и нетранзакционный механизмы хранения.9)Сравнительно простое добавление другого механизма хранения. 10) Очень быстрая система распределения памяти, основанная на потоках.11)•Очень быстрые соединения, использующие оптимизированные однопроходные мультисоединения.12)Хранимые в памяти хеш-таблицы, которые используются в качестве временных таблиц.13)Функции SQL реализованы с использованием высокооптимизированной библиотеки классов и должны выполняться предельно быстро. Как правило,какого-либо распределения памяти после инициализации запроса не выполняется.14)Сервер доступен как отдельная программа для использования в клиент-серверной сетевой среде. Кроме того, он также поставляется в виде библиотеки, которая может быть встроена в отдельные автономные приложения(Libmysql.dll). Такие приложения могут применяться в изолированной среде или среде, не имеющей доступа к сети.

32. Особенности использования сервера PostgreSQL. Доступ к БД.

Если вы создали базу данных, то вы можете получить доступ к ней через: 1)Использование графического инструмента типа pgAdmin.2)Написание специального приложения, используя один из нескольких доступных языков программирования, которые поддерживаются PostgreSQL. В Perl существует единый интерфейс для всех баз данных— dbi (Data Base Interface). Для доступа к

конкретной базе данных используется соответствующий драйвер dbd. dbh = DBI->connect($data_source, $username, $password) Сonnect устанавливает соединение с базой данных, или сеанс, в соответствии с заданным источником данных $data_source. Если соединение успешно установлено, возвращается объект дескриптора базы данных. Для закрытия соединения используйте метод $dbh->disconnect . Если попытка установления соединения заканчивается неудачей, метод возвращает undef и устанавливает $DBI::err и $DBI::errstr.С помощью DBI можно осуществлять множественные одновременные соединения с несколькими базами данных через несколько драйверов. Нужно лишь выполнить вызов connect для каждой из баз данных и сохранить по экземпляру каждого возвращенного дескриптора базы данных.Значение $data_source должно начинаться с dbi:driver_name . При этом driver_name указывает на драйвер, который должен использоваться для установления соединения. Пример значений $data_source: dbi::DriverName::database=database_name; host=hostname;port=port Единственное требование DBI состоит в том, чтобы все данные располагались в одной строке. . use DBI; my $dbh=DBI->connect( “DBI:pg:dbname=IS1_02;host=10.10.146.7;port=5432; ”IS1_02”.”IS”); if (!$db) { print "He удалось установить подключение к базе данных."; print "<BR>$DBI::err"; # Номер ошибки print "<BR>$DBI::errstr"; # Текст ошибки exit();}$dbh->disconnect();

Выполнение запросов:

Метод prepare () используется для подготовки запроса. Исполнение подготовленного запроса осуществляется методом execute(). Метод prepare() имеет следующий формат: <ID результата> = <Идентификатор>->рrераrе(<SQL-3anpoc>); <ID результата>->ехесutе () ;

Для удаления идентификатора результата применяется метод finish (): <ID результата>->finish();

$sth=$dbh->prepare("select *from kurs");

$sth->execute;

30. Основные характеристики и особенности Postgre.

PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД). Разработка Postgres, началась в 1986-ом году в Калифорнийском университете в Беркли.Надежность PostgreSQL является проверенным и доказанным фактом и обеспечивается следующими возможностями:1) полное соответствие принципам ACID - атомарность, непротиворечивость, изолированность, сохранность данных. Atomicity - транзакция рассматривается как единая логическая единица, все ее изменения или сохраняются целиком, или полностью откатываются. Consistency - транзакция переводит базу данных из одного непротиворечивого состояния в другое непротиворечивое. епротиворечивым считается состояние базы, когда на момент завершения транзакции соблюдены все ограничения целостности. Isolation - изменения данных при конкурентных транзакциях изолированы друг от друга на основе системы версионности. Durability - PostgreSQL заботится о том, что результаты успешных транзакций гарантировано сохраняются на жесткий диск вне зависимости от сбоев аппаратуры. 2) многоверсионность (Multiversion Concurrency Control,MVCC) означает, что каждая транзакция видит копию данных на время начала транзакции, несмотря на то, что состояние базы могло уже измениться. Это защищает транзакцию от несогласованных изменений данных, которые могли быть вызваны (другой) конкурентной транзакцией. 3) Целостность данных является сердцем PostgreSQL. Помимо MVCC, PostgreSQL поддерживает целостность данных на уровне схемы - это внешние ключи (foreign keys), ограничения (constraints).4) Модель развития PostgreSQL, которая абсолютно прозрачна для любого, так как все планы, проблемы и приоритеты открыто обсуждаются. Большое количество бета-тестеров способствует тестированию версии до релиза и вычищению мелких ошибок. 5)Открытость кодов PostgreSQL означает их абсолютную доступность для любого, а либеральная BSD лицензия не накладывает никаких ограничений на использование кода.

Производительность PostgreSQL основывается на использовании индексов, интеллектуальном планировщике запросов, тонкой системы блокировок(на уровне таблиц и записей), системе управления буферами памяти и кэширования, превосходной масштабируемости при конкурентной работе. Поддержка индексов Стандартные индексы/Частичные индексы /Функ. индексы Расширяемость PostgreSQL означает, что пользователь может настраивать систему путем определения новых функций, агрегатов, типов данных ,языков, индексов и операторов.Одной из прим особенно PostgreSQL является обобщенное поисковое дерево или GiST, которое дает возможность специалистам в конкретной области знаний создавать специализир типы данных и обеспечивает индексный доступ к ним PostgreSQL имеет очень богатый набор типов данных, встроенных функций и операторов для работы с данными. Поддержка 25 различных наборов символов (charsets) Интерфейсы в PostgreSQL реализованы для доступа к базе данных из ряда языков и методов доступа к данным.Безопасность данных также является важнейшим аспектом любой СУБД (Система аут-ции поддерживает пароли, шифр пароли, SSL,SSH).

34. Спецификация DBI.

DBI является модулем доступа к базам данных для языка программирования Perl. В нем определен ряд методов, переменных и соглашений, составляющих единообразный интерфейс баз данных, не зависящий от конкретной используемой базы данных.

Важно помнить, что DBI представляет гобой просто интерфейс, нечто вроде прослойки «клея» между приложением и одним или несколькими модулями драйверов баз данных. Самую большую часть работы выполняют именно драйверы. DBI предоставляет стандартный интерфейс и структуру, в рамках которой действуют драйверы.

API, или интерфейс прикладного программирования, определяет интерфейс вызовов и переменные, которые должны использоваться сценариями Perl. API реализован в расширении Perl DBI.

DBI «пересылает» вызовы методов надлежащим драйверам для фактического исполнения. DBI отвечает также за динамическую загрузку драйверов, проверку наличия ошибок и их обработку, предоставление выполняемых по умолчанию реализаций методов и выполняет другие задачи, не связанные с конкретными базами данных. Чтобы использовать DBI, нужно сначала загрузить модуль DBI: use DBI; use strict; (Директива use strict не является обязательной, но настоятельно рекомендуется к использованию.)Затем необходимо соединиться с источником данных и получить дескриптор соединения:$dbh = DBI->connect($dsn, $user, $password, { RaiseError => 1, AutoCommit => 0 }); DBI позволяет приложению «готовить» команды для последующего выполнения.

Подготовленная команда отождествляется с дескриптором команды, находящимся в

переменной Perl. В наших примерах эта переменная будет называться $sth.Типичная последовательность вызова методов для команды SELECT следующая:

prepare, execute, fetch, fetch,

Например:

$sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?"); $sth->execute( $baz ); while ( @row = $sth->fetchrow_array ) { print "@row\n"; }

Типичная последовательность вызова методов для команды, отличной от SELECT, следующая:

prepare, execute, execute, execute Например:

$stn = $dbh->prepare("INSERT INTO table(foo,bar,baz) VALUES (?,?,?)"); while(<CSV>) { chop;

mу ($foo,$bar,$baz) = split /,/; $sth->execute($foo,$bar,$baz); } Метод do() можно использовать для неповторяющихся не-SELECT команд (или с драйверами, не поддерживающими заполнители):$rows_affected = $dbh->do("UPDATE your_table SET foo = foo + 1"); Наконец, если вы завершили работу с источником данных, следует отсоединиться от него: $dbh->disconnect;