Пособие по написанию 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 < 0) { $hour = $hour + 24; } elsif ($hour > 24) { $hour = $hour - 24; } if ($hour < 10) { $hour = 0 . $hour; } if ($min < 10) { $min = 0 . $min; } if ($sec < 10) { $sec = 0 . $sec; } $Deck = "Content-type: text/vnd.wap.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> <p align=\"center\"> World Time<br/> </p> <p align=\"left\" mode=\"wrap\"> Current time in $CityName is<br/> $hour:$min:$sec<br/> </p> </card> </wml>"; 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.









Начало    Назад    Вперед