Рассмотрение Perl-сиенария HotelAvailWML.pl
Рассмотрение Perl-сиенария HotelAvailWML.pl
После того как пользователь выберет гостиницу, программный код приложенияHotellnfo запускает Peri-сценарий, создающий WML-страницу, которая выводитприглашение пользователю на ввод регистрационных данных. Для приема данной информации приложение могло бы использовать или WML-страницу, илиPeri-сценарий; однако, чтобы облегчить проверку вводимой пользователем информации, предпочтение отдается Peri-сценарию. Peri-сценарий HotelAvailWML.plреализуется с помощью следующего программного кода:
#!/usr/bin/perl
$HotelCode = $ENV{'QUERY_STRING'};
$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=\"Avail\">
<do type=\"accept\" label=\"Edit\"> <noop /> </do>
<do type=\"options\" label=\"Check\"> <go method=\"post\" href=\"CheckAvailWML.pl\"> <postfield name=\"HotelCode\" value=\" \$(HotelCode)&\"/> <postfield name=\"CheckInDate\" value=\" \$(CheckInDate:noesc)&\"/> <postfield name=\"CheckOutDate\" value=\" \$(CheckOutDate:noesc)&\"/> <postfield name=\"NumGuests\" value=\" \$(NumGuests)\"/> </go> </do>
<p align=\"center\">
Web Inns<br/> $HotelCode
</p>
<p align=\"left\" mode=\"nowrap\">
<select>
<option onpick=\"#GetCheckIn\">Check In (mm/dd/yy): \$(CheckInDate)</option> <option onpick=\"#GetCheckOut\">Check Out (mm/dd/yy): \$(CheckOutDate)</option> <option onpick=\"#GetNumber\">Number of guests: \$(NumGuests)</option>
</select>
</p>
</card>
<card id=\"GetCheckIn\">
<do type=\"accept\"> <go href=\"#Avail\" /> </do>
<p align=\"left\" mode=\"nowrap\">
Check in: <input name=\"CheckInDate\" maxlength=\"8\" format=\"NN/NN/NN\" />
</p>
</card>
<card id=\"GetCheckOut\">
<do type=\"accept\"> <go href=\"#Avail\" /> </do>
<p align=\"left\" mode=\"nowrap\">
Check out: <input name=\"CheckOutDate\" maxlength=\"8\" format=\"NN/NN/NN\" />
</p>
</card>
<card id=\"GetNumber\">
<do type=\"accept\"> <go href=\"#Avail\" /> </do>
<p align=\"left\" mode=\"nowrap\">
Number of guests: <input name=\"NumGuests\" maxlength=\"2\" format=\"N*N\" />
</p>
</card>
</wml>";
print $Deck;
Сценарий создает карту, содержащую элемент <select>, который обеспечиваетвозможность выбора для редактирования числа постояльцев, даты заселения илидаты выселения. В зависимости от сделанного пользователем выбора выполняется ветвление программного кода и переход на локальную карту, содержащую элемент <input>, который выводит приглашение пользователю на ввод данных. Поле format, присутствующее внутри каждого элемента <input>, определяет формат данных, воспринимаемых приложением. После ввода пользователем требуемых данных приложение вызывает Peri-сценарий CheckAvailWML.pl, отображающий на экране обобщенную информацию по свободным номерам.
В реальном приложении сценарий CheckAvailWML.pl взаимодействовал бы с базой данных, чтобы определить наличие свободных номеров.Затем сценарийсортировал бы свободные номера по типу гостиницы и предоставлял бы пользователю возможность зарезервировать номер из выводимого списка. Для простоты сценарий, запускаемый приложением Hotellnfo, отображает один и тот же список гостиничных номеров, независимо от выбранной гостиницы или введенныхрегистрационных данных.