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

Пример: Добавление в конец файла

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

# Определяем переменную, содержащую путь к записываемому файлу

$targetfile = "c:\webserver\htdocs\mynewpage.html";

# Открываем файл, используя идентификатор NEWINFO

open (NEWINFO, ">>$targetfile");

# Добавляем новые данные в файл:

print NEWINFO "\n\n";

print NEWINFO "Имя: ", $input{'user_name'},"\n<br>";

print NEWINFO "Компания: ", $input{'co_name'},"\n<br>";

print NEWINFO "Телефон: ", $input{'phone'},"\n</p>\n<p><hr></p>\n";

close (NEWINFO);

Пример: Добавление в середину существующего файла

Более сложной задачей является вставка новых данных в середину файла. Обратите внимание, что в первом примере мы вставили в файл линию комментария, выглядящую следующим образом:

<!-- NEW INSERTS GO HERE -->

 

Этот комментарий будет служить нам меткой места, в которое нужно вставлять новые данные. Данный пример содержит не совсем изящное решение, но прост в реализации и понимании. Он использует временный файл, хотя можно обойтись и без него:

# Определяем переменную, содержащую путь к исходному файлу

$origfile = "/pathname/originalfile.htm";

# Определяем переменную, содержащую путь к временному файлу

$newfile = "/pathname/newfile.htm";

open(INFILE, "<$origfile");

open(OUTFILE, ">$newfile");

while ($line = <INFILE>) {

printf OUTFILE $line;

if ($line =~ /<!-- NEW INSERTS GO HERE -->/i) {

# Добавляем новые данные в файл:

print OUTFILE "\n\n";

print OUTFILE "Имя: ", $input{'user_name'},"\n<br>";

print OUTFILE "Компания: ", $input{'co_name'},"\n<br>";

print OUTFILE "Телефон: ", $input{'phone'},"\n</p>\n<p><hr></p>\n";

}

}

# Закрываем файлы

close(INFILE);

close(OUTFILE);

# Удаляем исходный файл и переименовываем новый в исходный

unlink($origfile);

rename($newfile, $origfile);

Пример: Отправка данных по e-mail

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

Для этого вам потребуется программа посылки почты с интерфейсом командной строки. Под UNIX это может быть sendmail или mail. В данном примере данные посылаются с помощью программы sendmail. Вместо записи в файл мы используем запись в специально открытый канал (pipe):

# Адрес e-mail

$sendto = "webmaster\@telesputnik.ru";

# Открываем канал

open (MAIL, "| /usr/bin/sendmail $sendto")

# Печатаем в канал в специальном формате

print MAIL "From: Web-сервер\n";

print MAIL "To: $sendto\n";

print MAIL "Subject: Ввод новых данных";

print MAIL "Кто-то воспользовался формой для ввода новых данных";

print MAIL "Вот что он ввел:";

print MAIL "Имя: ", $input{'user_name'},"\n";

print MAIL "Компания: ", $input{'co_name'},"\n";

print MAIL "Телефон: ", $input{'phone'},"\n ";

# Посылаем письмо, закрывая канал

close (MAIL);

Обсуждение: Создание web-страниц "на лету"

Последней важной частью Perl скрипта является посылка результата обратно пользователю. Это достигается тем же print, но без идентификатора файла или канала. Все, что печатается на стандартный выход формирует текущий документ в окне браузера. Например:

print "Content-Type: text/html\n\n";

print "<html>\n<head>\n<title>Спасибо</title>\n</head>";

print "<body>\n<h1>Спасибо за заполнение формы</h1>";

print "Мы получили ваше имя, место работы и телефон,";

print " которые вы видите ниже:<br>\n";

print "Имя: ", $input{'user_name'},"\n<br>";

print "Компания: ", $input{'co_name'},"\n<br>";

print "Телефон: ", $input{'phone'},"\n</p>\n<p><hr></p>\n";

print "</body>\n</html>";

Обратите внимание на первую строку. Эта строка содержит информацию о типе возвращаемых данных. Двойной перевод стоки при этом обязателен. Эта страница будет возвращена пользователю почти сразу после нажатия им кнопки Submit.

Учтите, что это всего лишь один из многих примеров того, какой может быть страница "на лету". В принципе вы можете формировать HTML документ любой формы и содержания.