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



              

Подробнее о сценариях языка Perl,используемых в приложении



Подробнее о сценариях языка Perl,используемых в приложении


Когда пользователь выбирает опцию Zip Code (Почтовый индекс) в приложенииWeatherlnfo, в исходном коде ему предлагается ввести почтовый индекс. Далее запускается сценарий языка Perl, который этот индекс анализирует. Если пользователем введен разрешенный индекс (в нашем случае один из нескольких известных приложению), сценарий открывает, а затем печатает соответствующий файло погоде (вывод которого перехватывается браузером). Если пользователь ввелнедоступный почтовый индекс, сценарий открывает файл Unknown.wml, исходный код которого производит отображение сообщения об ошибке. Исходныйкод сценария языка Perl ZipWeatherWML.pl приведен ниже: #!/usr/bin/perl print "Content-type: text/vnd.wap.wml\n\n"; $Buffer = $ENV{'QUERY_STRING'}; if ($Buffer eq "87101") { $FileName = "../Weather/87101.wml"; } elsif ($Buffer eq "87701") { $FileName = "../Weather/87701.wml"; } elsif ($Buffer eq "89101") { $FileName = "../Weather/89101.wml"; } elsif ($Buffer eq "89501") { $FileName = "../Weather/89501.wml"; } else { $FileName = "../Weather/Unknown.wml"; } open (WeatherInfo, $FileName); while (<WeatherInfo>) { print; } close (WeatherInfo);
Первая строка сценария представляет собой комментарий, сообщающий интерпретатору командной строки, где находится интерпретатор языка Perl. Втораястрока информирует браузер (который перехватывает вывод) о том, что результатом работы сценария будет создание исходного кода формата WML. Далее используется функция $ENV для извлечения параметра почтового индекса.
После получения сценарием этого индекса используется серия конструкций if-else для определения, является ли введенный индекс доступным. Если сценарийраспознал введенный индекс, он присваивает имя файла формата WML этого индекса переменной $FileName. Позднее сценарий откроет и выведет соответствующий файл (который может быть и файлом Unknown.wml). Браузер, поддерживающий протокол WAP, в свою очередь, перехватывает вывод, трактуя его каккарту формата WML. ^ v i, t ;я;
В файле формата WML для определенного индекса исходный код предлагаетпользователю выбрать, что он желает узнать: текущую погоду, погоду на сегодняшний день или прогноз на завтра. После этого, основываясь на выборе пользователя, отображается информация о погоде.
В нашем случае карта содержит всю информацию о погоде. В реальном приложении вам необходимо будет использовать базу данных для хранения информации о погоде, исходя из содержимого которой будут создаваться в процессе работы приложения соответствующие карты, содержащие необходимую информацию.
Сценарий языка Perl CityWeatherWML.pl анализирует название города, получаемоеим из приложения как параметр, и затем, основываясь на введенном названии,открывает и выводит файл, предлагающий пользователю выбрать информацию отекущей погоде, погоде на сегодняшний день или прогноз на завтра. После этогофайл выводит на дисплей телефона соответствующую погодную информацию.Сценарий CityWeatherWML.pl имеет следующий исходный код: #!/usr/bin/perl print "Content-type: text/vnd.wap.wml\n\n"; $Buffer = $ENV{'QUERY_STRING'}; $Buffer =~ s/%20/ /g; if ($Buffer eq "Las Vegas") { $FileName = "../Weather/LasVegas.wml"; } elsif ($Buffer eq "Reno") { $FileName = "../Weather/89501.wml"; } elsif ($Buffer eq "Albuquerque") { $FileName = "../Weather/87101.wml"; } else { $FileName = "../Weather/Unknown.wml"; } open (WeatherInfo, $FileName); while (<WeatherInfo>) { print; } close (WeatherInfo);
Как вы видите, в сценарии используется последовательность конструкций if-else для определения введенного пользователем названия города. Если сценарийобнаруживает поддерживаемое название города, он присваивает его переменной$FileName, которую использует позднее для открытия и вывода содержимогофайла. Если введенное название не поддерживается сценарием, то этой переменной присваивается имя файла Unknown.wml с целью вывода на дисплей пользователя сообщения об ошибке. Наше приложение поддерживает всего два города: Лас-Вегас, штат Невада (Las Vegas, Nevada) и Лас-Вегас, штат Нью-Мехико (LasVegas, New Mexico). Поскольку названия городов одинаковы, приложение должно предложить пользователю выбрать один из городов. Файл LasVegas.wml имеетприведенный ниже исходный код: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0" forua="true"/> </head> <card> <do type="prev"> <go href="../Weather/Weather.wml#GetCity" /> </do> <p align="center" mode="wrap"> Pick City<br/> <select> <option onpick="../Weather/87701.wml" >Las Vegas, NM</option> <option onpick="../Weather/89101.wml" >Las Vegas, NV</option> </select> </p> </card> </wml>
Для определения выбранного пользователем города в деке используется элемент<seleot>. После того как пользователь произведет выбор, загружается соответствующая городу дека формата WML (на самом деле дека, соответствующая почтовому индексу города).
Как вы понимаете, сценарий языка Perl StateWeatherWML.pl работаетаналогичным образом, используя переданный параметр для определениявыбранного пользователем штата. После этого происходит вывод необходимойинформации на дисплей сотового телефона.









Содержание    Назад    Вперед