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

       

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



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

Как было сказано выше, каждый раз, когда пользователь производит выбор горо- да, файл WorldTime.wml запускает сценарий языка Perl, который собственно и вы- числяет текущее время. После этого сценарий Perl, используя вычисленное не- давно время, создает новую WML-деку, которая передается браузеру WAP.

Приведем исходный код сценария языка Perl WorldTime.pl:

#!/usr/bin/perl

$Buffer = $ENV{'QUERY_STRING'}; $Buffer =~ s/%20/ /g;

$CityName = $Buffer;

if ($CityName eq "Honolulu") { $Delta = -10; } elsif ($CityName eq "London") { $Delta = +1; } elsif ($CityName eq "Los Angeles") { $Delta = -7; } elsif ($CityName eq "New York") { $Delta = -4; } elsif ($CityName eq "Paris") { $Delta = +2; } elsif ($CityName eq "Phoenix") { $Delta = -7; } else { $Delta = +9; }

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);

$hour = $hour + $Delta;

if ($hour &lt 0) { $hour = $hour + 24; } elsif ($hour &gt 24) { $hour = $hour - 24; }

if ($hour &lt 10) { $hour = 0 . $hour; } if ($min &lt 10) { $min = 0 . $min; } if ($sec &lt 10) { $sec = 0 . $sec; }

$Deck = "Content-type: text/vnd.wap.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

&ltp align=\"center\"&gt

World Time&ltbr/&gt

&lt/p&gt

&ltp align=\"left\" mode=\"wrap\"&gt

Current time in $CityName is&ltbr/&gt $hour:$min:$sec&ltbr/&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt";

print $Deck;

Первая строка сценария является просто комментарием, который сообщает интерпретатору командной строки, где находится интерпретатор языка Perl.


Сле- дующие две строки сценария позволяют ему найти параметр, который карта исходной деки передала сценарию:

$Buffer = $ENV{'QUERY_STRING'}; $Buffer =~ s/%20/ /g;

Первый оператор возвращает значение параметра. Второй оператор удаляет всепустые символы (пробелы) из названия города, которое содержится в параметре,для облегчения сценарию обработки конструкции if-else.

Далее, приложение извлекает из параметра название города. После этого сценарий использует серию операторов if-else для определения часового пояса вы- бранного города относительно времени по Гринвичу (GMT). Если приложениедолжно выдавать сведения о большем количестве городов, то в исходный коддолжны быть добавлены операторы, позволяющие вычислять разницу во време- ни для этих городов. ./.,:

Напоследок, сценарий использует функцию gmtime для вычисления текущей даты и времени по Гринвичу: ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);

Для вычисления текущего времени используется разница во времени выбранного города по отношению ко времени по Гринвичу. К примеру, вычислено, чтовремя по Гринвичу 16 часов. Тогда в Финиксе (Аризона), который имеет поправкупо времени -7 часов, текущее время будет 9 часов утра.

После того как сценарий вычислит текущее время, он создает новую карту формата WML, которая передается браузеру WAP. Для того чтобы создать эту карту, сце- нарий формирует содержимое карты в символьной строке с именем $Deck. Послеэтого дека передается в браузер с использованием оператора печати print.


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