Разделы:

Главная

О проекте

Загрузки

Документация:

Linux

BSD

Другие Unix

Программинг

HTML, XML...

Сервера

"Окна Закрой!"

MANы

 



WEB-программирование на PERL


(краткий теоретический курс)


Введение

Эта статья не притендует на роль учебника по программированию на языке PERL, а представляет лишь попытку очертить круг знаний, необходимых для программирования в Вебе на этом языке.
Приведенные здесь материалы вполне достаточны для написания большинства необходимых скриптов (счетчик со статистикой, гостевая книга, форма аутентификации и пр.).

Некоторые "необходимости" для начала программирования:
  1. Знание устройства файловой системы Unix

  2. По той причине, что большинство ( а 80% - это большинство) интернет серверов работает под управлением одной из разновидностей Unix, программируя следует четко представлять как располагаются файлы в этой ОС.
  3. Наличие настроенного веб-сервера

  4. Perl скрипты это не JavaScript, исполняемый браузером, а потому исполняются на сервере.
  5. Наличие интерпретатора PERL


Общие сведения о взаимодействии клиента и сервера:
--------  входн. данные  --------
|      |---------------->|      |
|клиент|                 |сервер| 
|      |<----------------|      |
--------    результат    --------
Всего существует 3 способа запустить на сервере CGI-программу:
  1. Набрать в адресной строке браузера URL программы,
  2. Кликнуть по ссылке на программу,
  3. Вызвать программу из формы.
Методы взаимодействия:
  1. GET - данные передаются непосредственно в заголовке запроса (длина заголовка 255 символов)
  2. POST - данные передаются в теле запроса (длина не лимитирована)


Основы программирования на языке PERL
Файлы скриптов на языке PERL имеют расширения .pl и .cgi, помещаются в каталог /cgi-bin (где / - корневой каталог вашего сайта).
Начало скрипта является неизменным: /usr/bin/perl или /usr/local/bin/perl в зависимости от расположения интерпретатора у Вашего хостера.
Второй строкой идет печать в поле заголовка ответа:
print"Content-Type:text/html \n\n";
Text/html определяе тип ответа (html документ), также может стоять text/plain (обычный текст), image/gif(изображение gif), video/avi (avi видео)...

Переменные языка Perl
$name - числовые величины, строки
Пример:
$a="яблоко";
$b=123;
$b="123 яблока";

Операции сравнения

числа строки
меньше < lt
больше > gt
меньше или равно <= le
больше или равно >= ge
равно == eq
не равно != ne
сравнение <=> cmp
Последняя операция возвращает 0, если числа равны; 1 - если первое число больше второго и -1, когда второе больше первого.

Операции присвоения

= присвоение значения
+= увеличить на
-= уменьшить на
*= увеличить в
/= уменьшить в
%= остаток от деления по модулю

Другие операции
+,-,*,/ арифметические операции
++ увеличить на 1 (пример: $a++;)
-- уменьшить на 1
.. диапозон (пример: 2..5 все числа от 2 до 5)
?: сокращенное условие СИНТАКСИС (условие)?"знач1":"знач2" если условие верно, то возвращается 1-е значение, если нет - второе.

Логические операции
&& логическое "и" для объединения условий
|| логическое "или" (одно из условий должно быть верно)
! логическое "не"

Списки
Список представляет набор значений
СИНТАКСИС ($a, $b, $c)=3,5,6;
Если ($a, $b, $c)=3,7; то $c=undef;

Массив
Именованный список @name
Создание массива
1. Целиком - @passw=(1,2,"password");
Все элементы массива индексируются с 0.
2.Поэлементно -
$passw[0]=1;
$passw[1]=2;
$passw[2]="password";
Обращение к элементу массива - $passw[2]

Хэши
Хэш - ассоциативный массив
Пример хэша:
значения| Russia  | Tula 
--------|---------|-------
ключи   | country | city


%name обозначение хэша.
обращение к элементу хэша $name{key};
Создание
1. Поэлементно:
$hash{passw1}="passw";
$hash{passw2}="passw1";
2. Целиком
%hash=("key1"=>"Value1", "key2"=>"Value2" ...);

Условные операторы
if(условие){
действие
}
elsif(условие2){
действие2
}
else{
действие3
}

Циклы
1. for(нач. знач; условие; шаг)
   {команды;}
2. while(условие);
   {команды;}

Проход по массиву
1. С использованием цикла for
@os=("linux", "freebsd", "windows");
for($i=1; $i<=$#os; $i++)
{print "$os[$i]";}
2. С использованием цикла foreach
foreach $system(@os)
{print $system;}
На каждую операцию цикла из массива @os в переменную $system копируется один элемент массива.

Функции по работе с числами
$перем=abs($число); возвращает модуль от числа
$перем=hex($число); возвращает число, переведенное из шестнадцатиричной системы в десятичную.
$перем=int($число); возвращает целую часть числа.
$перем=chr($число); возвращает букву по ASCII коду.
$перем=ord($буква); возвращает ASCII код буквы.

Функции по работе со строками
chomp ($строка); удаляет оконечные пробельные символы.
$перем=join("разделитель", @мас); возвращает все элементы массива записанные через разделитель.
$перем=lc($строка); возвращает строку, все символы которой приведены к нижнему регистру.
$перем=uc($строка); возвращает строку, все символы которой приведены к верхнему регистру.

Функции работы с массивами и хэшами
chomp(@массив); очищает массив от пробельных символов.
@массив=split/разделитель/,$строка; Возвращает список значений, разбитый по разделителю (обратна функции join).
push(@массив, список); добавляет элементы списка в конец массива.
unshift(@массив, список); добавляет элементы списка в начало массива.

Создание собственных функций
Функция создается конструкцией sub имя { действие; }
Вызов функции осуществляеся по имени: имя( аргументы );
Пример: sub hello # создаём функцию
  { print"hello";} # прописываем действие функции
hello; # вызываем функцию
Передача параметров:
pr('world');
sub pr {print"Hello $@_[0]";}
@_ стандартный массив параметров.

Вывод больших объёмов текста
print<<МЕТКА;   # Метка пишется заглавными буквами, если необходима подстановка переменных.
.
текст
.
МЕТКА

Регулярные выражения (кратко).
1. Поиск
$перем= ~m/шаблон/модификаторы;
В шаблоне могут использоваться слова, строки, цифры и классы (см. в справочниках)
Модификаторы позволяют передать дополнительную информацию для поиска:
i поиск без учета регистра
g глобальный поиск
2. Подстановка
$перем=~s/шаблон/подстановка/модификаторы;
3. Посимвольная замена
$= ~tr/симв1/симв2;

Работа с файлами
copy("old","new");   копирование файла, где old - путь к копируемому файлу, new - путь к новому файлу.
rename ("old", "new");  переименование файла.
unlink ("путь");  удаление файла.

Работа с содержимым файла
Открытие файла:   open(дискриптор, "путь");
Дискриптор - имя, по которому будет происходить обращение к этому файлу.
Опции открытия файла:
< - чтение (по умолчанию)
> - запись (все записанное ранее стирается)
>> - дозапись.
СИНТАКСИС: open(file, ">>1.txt");
Чтение из файла:
в переменную $a=<дискриптор>;
в массив @a=<дискриптор>;
Запись в файл: print дискриптор "HELLO!";
Закрытие файла: close(дискриптор); Обязательно закрывайте все открытые файлы!

Заключение

Это все или почти все необходимые знания для начала написания скриптов. В следующих статьях будут рассмотрены написание и отладка скриптов на локальном сервере.


Дмитрий Пузанов


Вы можете размещать эту статью на своем сайте при условии
обязательной ссылки на сайт http://www.prounix.h12.ru


Партнёры и спонсоры проекта:

Все материалы сайта распространяются по лицензии GNU/GPL
© ProUNIX 2003-2009, UnixLib 2005-2009, SoftLib 2006-2009.