Пособие по написанию WAP-сайтов

Подробнее о сценарии языка Perl MovieGuideWML.pl



Подробнее о сценарии языка Perl MovieGuideWML.pl

Как вы заметили, когда пользователь производит выбор кинотеатра, приложениеMovieGuide вызывает сценарий языка Perl MovieGuideWML.pl:

#!/usr/bin/perl

print "Content-type: text/vnd.wap.wml\n\n";

$Buffer = $ENV{'QUERY_STRING'};

$FileName = "../MovieGuide/" . $Buffer . ".wml";

open (MovieInfo, $FileName);

while (&ltMovieInfo&gt) { print; }

close (MovieInfo);

Когда запускается сценарий языка Perl, он открывает файл формата WML, соответствующий выбранному пользователем кинотеатру. Вы уже знаете, что декаMovieGuide.wml передает сценарию название кинотеатра как параметр. Используя содержимое специальной деки кинотеатра формата WML, сценарий языка Perlсоздает второй файл формата WML, который затем отобразит браузер.

Перед тем как вы узнаете, почему приложение использует второй сценарий,важно, чтобы вы поняли, как работает сценарий MovieGuideWML.pl. Первая строка сценария является просто командой, которая сообщает интерпретатору командной строки, где находится интерпретатор языка Perl. Далее print выводитданные, которые браузер использует для создания новой деки формата WML:

#!/usr/bin/perl

print "Content-type: text/vnd.wap.wml\n\n";



Сценарий использует функцию $ENV для извлечения значения параметра, в нашем случае названия кинотеатра. Далее, сценарий создает путь доступа, например, . .MovieGuide/CineS .wml посредством связи (конкатенации) пути. .MovieGuide/ и имени параметра, например, CineS, а также расширения wml:

$Buffer = $ENV{'QUERY_STRING'};

$FileName = "../MovieGuide/" . $Buffer . ".wml";

Сценарий открывает файл и начинает читать и записывать содержимое файладля создания нового файла сценария. Другими словами, сценарий считывает информацию в формате WML из входного файла, затем записывает информацию настандартное выходное устройство (stdout), откуда браузер эту информацию считывает и создает новую деку формата WML. Для управления входными даннымисценарий использует дескриптор файла, который сохраняется в переменнойMovielnf о.

Приведем операторы, которые используются в цикле while для обеспечения сценарию считывания и записи файла формата WML:

open (MovieInfo, $FileName);

while (&ltMovieInfo&gt) { print; }

close (MovieInfo);

Далее приведем исходный код файла CineS.WML:

&lt?xml version="1.0"?&gt &lt!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"&gt

&ltwml&gt

&lthead&gt

&ltmeta http-equiv="Cache-Control" content="max-age=0" forua="true"/&gt

&lt/head&gt

&ltcard&gt

&ltdo type="accept" label="Back"&gt &ltgo href="../MovieGuide/MovieGuide.wml"/&gt &lt/do&gt

&ltp align="center"&gt

&ltb&gtCinema 8&lt/b&gt &ltbr/&gt1040 South &ltbr/&gtSage Way

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtThe Blair Witch Project&lt/i&gt &ltbr/&gt4:25, 7:30, 9:15

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtInspector Gadget&lt/i&gt &ltbr/&gt4:40, 7:35, 9:25

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtStory of Us&lt/i&gt &ltbr/&gt7:10, 9:30

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtThree to Tango&lt/i&gt &ltbr/&gt7:25, 9:30

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtThree Kings&lt/i&gt &ltbr/&gt7:05, 9:20

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtSuper Star&lt/i&gt &ltbr/&gt7:25, 9:15

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtMystery Alaska&lt/i&gt &ltbr/&gt7:05, 9:20

&lt/p&gt

&ltp align="center"&gt

.......... &ltbr/&gt&lti&gtRunaway Bride&lt/i&gt &ltbr/&gt7:00, 9:10

&lt/p&gt

&lt/card&gt

&lt/wml&gt

Как вы можете видеть, файл начинается со стандартной информации заголовка.Далее, файл определяет единственную карту, в которой используется серия теговабзаца <р> для вывода времени начала фильмов. Используется также элемент<do>, который позволяет пользователю вернуться к предыдущему экрану, который в нашем случае находится в файле MovieGuide.wml в директории MovieGuide:

&ltdo type="accept" label="Back"&gt &ltgo href="../MovieGuide/MovieGuide.wml"/&gt &lt/do&gt


Содержание раздела