Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документация, учебники по Perl.doc
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
1.83 Mб
Скачать

Обсуждение: Настройка скрипта

Как уже было сказано, первая часть скрипта содержит настройки, включающие в себя несколько элементов. Первая строка определяет путь к программе-интерпретатору: #!/usr/local/bin/perl для UNIX или \Program Files\Perl5\perl.exe для Win32

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

Комментарии могут располагаться в любом месте программы и начинаются с символа #:

# Это комментарий

или

open (NAMEFILE, ">$testfile"); #Открываем файл для записи...

 

Также хорошей манерой является определение в начале скрипта всех констант и глобальных переменных. (Советую все пути прописывать в виде переменных, особенно если программа содержит более 50 строк, для удобства изменения местоположения файлов). Например:

$homepage = "http://server_name/home/";

 

Все обычные переменные в Perl начинаются с символа $. Существует много других видов переменных, таких как массивы и т.п.

Все строки программы кроме первой и комментариев должны заканчиваться на ";".

Обсуждение: Чтение данных из формы

Теперь необходимо "считать" введенные пользователем данные в переменные Perl. После того как пользователь нажмет кнопку Submit в форме браузер посылает серверу имя скрипта и данные, взятые из формы. Данные передаются скрипту на стандартный вход.

Предположим, что форма содержит следующие поля:

Имя поля в форме

Имя, определенное параметром name="xxx" в тэге поля

Данные пользователя

Имя:

user_name

Andy Novikov

Компания:

co_name

TeleSputnik

Телефон:

phone

(812) 123-45-67

В этом случае данные будут посланы скрипту в следующем формате: user_name=Andy+Novikov&co_name=TeleSputnik&phone=(812)+123-45-67

Perl скрипт должен разобрать эту строку по частям и сохранить в переменных для дальнейшей обработки. Строки, производящие эти действия достаточно стандартны:

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

 

Эта строка читает данные со стандартного входа и помещает их в переменную $buffer. Длина строки передается скрипту через переменную окружения CONTENT_LENGTH.

Как только данные помещены в переменную $buffer вы можете разбить их на отдельные переменные с соответствующими им значениями:

@pairs = split(/&/, $buffer);

 

Теперь мы получили массив @pairs со следующими строковыми переменными: [1] user_name=Andy+Novikov [2] co_name=TeleSputnik [3] phone=(812)+123-45-67

Теперь нам необходимо разбить эти строки на пары параметр-значение:

foreach $pair (@pairs) {

($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /; # заменяем плюсы на пробелы

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/<!--(.|\n)*-->//g;

$input{$name} = $value;

}

 

Таким образом вы получаете массив переменных, индексом в котором является значение параметра name поля формы, а значением - данные, введенные в соответствующее поле.