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



              

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



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


В идеале приложение SmartHouse соединяется с оборудованием, находящимсявнутри вашего дома. В нашем случае это оборудование симулирует сценарий языка Perl. Этот сценарий содержит следующий исходный код: #!/usr/bin/perl $Buffer = $ENV{'QUERY_STRING'}; @data = split(/&/, $Buffer); $Bedroom = $data[0]; $Kitchen = $data[1]; $Living = $data[2]; $Office = $data[3]; $Outside = $data[4]; if ($Bedroom eq -1) { srand; $Bedroom = rand(); $Bedroom = int ($Bedroom + .5); $Kitchen = rand(); $Kitchen = int ($Kitchen + .5); $Living = rand(); $Living = int ($Living + .5); $Office = rand(); $Office = int ($Office + .5); $Outside = rand(); $Outside = int ($Outside + .5); } if ($Bedroom eq 0) { $OptionBedroom = "<option onpick=\"UpdateHouseWML.pl?1\& $Kitchen\&$Living\&$Office\&$Outside\">"; $OptionBedroom = $OptionBedroom . "Bedroom is OFF</option>"; } else { $OptionBedroom = "<option onpick=\"UpdateHouseWML.pl?0\& $Kitchen\&$Living\&$Office\&$Outside\">"; $OptionBedroom = $OptionBedroom . "Bedroom is ON</option>"; } if ($Kitchen eq 0) { $OptionKitchen = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&1\&$Living\&$Office\&$Outside\">"; $OptionKitchen = $OptionKitchen . "Kitchen is OFF</option>"; } else { $OptionKitchen = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&0\&$Living\&$Office\&$Outside\">"; $OptionKitchen = $OptionKitchen . "Kitchen is ON</option>"; } if ($Living eq 0) { $OptionLiving = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&1\&$Office\&$Outside\">"; $OptionLiving = $OptionLiving . "Living room is OFF</option>"; } else { $OptionLiving = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&0\&$Office\&$Outside\">"; $OptionLiving = $OptionLiving . "Living room is ON</option>"; } if ($Office eq 0) { $OptionOffice = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&$Living\&1\&$Outside\">"; $OptionOffice = $OptionOffice . "Office is OFF</option>"; } else { $OptionOffice = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&$Living\&0\&$Outside\">"; $OptionOffice = $OptionOffice . "Office is ON</option>"; } if ($Outside eq 0) { $OptionOutside = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&$Living\&$Office\&1\">"; $OptionOutside = $OptionOutside . "Outside is OFF</option>"; } else { $OptionOutside = "<option onpick=\"UpdateHouseWML.pl? $Bedroom\&$Kitchen\&$Living\&$Office\&0\">"; $OptionOutside = $OptionOutside . "Outside is ON</option>"; } $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 id=\"House\"> <do type=\"accept\" label=\"OnOff\"> <noop /> </do> <p align=\"center\"> Smart House </p> <p align=\"left\" mode=\"nowrap\"> <select> $OptionBedroom $OptionKitchen $OptionLiving $OptionOffice $OptionOutside </select> </p> </card> </wml>"; print $Deck;
Как было сказано выше, когда приложение вызывает сценарий языка Perl, емупередаются параметры, которые соответствуют установкам в доме. Когда сценарий начинает выполняться, он использует функцию $ENV для получения указателя на список параметров. Далее, исходный код использует функцию разделенияsplit (/&/, $Buffer) для анализа переданного, используя символ & (амперсанд)как разделитель и передавая значения массиву с именем gdata. В итоге в сценарии присваиваются значения элементов массива переменным, которые будут использоваться в процессе работы: $Buffer = $ENV{'QUERY_STRING'}; @data = split(/&/, $Buffer); $Bedroom = $data[0]; $Kitchen = $data[1]; $Living = $data[2]; $Office = $data[3]; $Outside = $data[4];
Далее, в исходном коде проверяется значение переменной $Bedroom. Если значение этой переменной равно -1, которое означает, что приложение вызываетсценарий в первый раз и сценарий должен сгенерировать случайные значенияустановок ON/OFF (ВКЛ/ВЫКЛ) бытовой техники в доме.
Если приложение вызывает сценарий не в первый раз, сценарий обрабатываетпоследовательность конструкций if-else, определяя, производятся ли пользователем изменения в установках, и если да, то какое значение (ON или OFF) имеет на данный момент определенная установка (сценарий может также менять этизначения).
После этого сценарий с новыми значениями установок создает еще одну карту,используя элемент print. Браузер отображает конечный результат установок надисплее сотового телефона.









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