Подробнее о сценарии языка Perl PackageWML.pl
Подробнее о сценарии языка Perl PackageWML.pl
Как было сказано, каждый раз после ввода пользователем номера посылки, декаPtracker.wml загружает сценарий языка Perl, который и отображает информациюо текущем статусе посылки или отображает сообщение о том, что такой посылкине существует (ошибка). Исходный код сценария PackageWML.pl приведен ниже:
#!/usr/bin/perl
print "Content-type: text/vnd.wap.wml\n\n";
$Buffer = $ENV{'QUERY_STRING'};
if ($Buffer eq "AD12345") { $FileName = "../PackageTracker/AD12345.wml"; } else { $FileName = "../PackageTracker/BadID.wml"; }
open (PackageInfo, $FileName);
while (<PackageInfo>) { print; }
close (PackageInfo);
Первая строка сценария является всего лишь комментарием, сообщающим интерпретатору командной строки, где находится интерпретатор языка Perl. Втораястрока сообщает браузеру протокола WAP о том, что после окончания работысценария на выходе будет создан исходный код формата WML. Далее, в исходномкоде используется функция $ENV для определения номера посылки, который декаформата WML передает сценарию как параметр.
После этого в коде используется последовательность операторов if-else дляопределения введенного пользователем номера (номер может быть толькоAD12345, единственный распознаваемый нашим приложением). Если пользователем введен именно этот номер посылки, то загружается дека AD12345.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="accept"> <go href="../PackageTracker/PTracker.wml"/> </do>
<p align="center">
Package<br/> Tracker<br/> </p>
<p align="left" mode="nowrap">
Package AD12345<br/> Pickup LAS 11/13/99 12:30<br/> Left LAS 11/13/99 15:00<br/> Arrive HOU 11/13/99 21:00<br/> Delivered 11/14/99 09:00<br/>
</p>
</card>
</wml>
В коде просто используются элементы <р> для отображения информации о посылке. В реальном приложении, в исходном его коде должен осуществляться поиск информации о посылке в базе данных, и дека, подобная описанной, создаваться в процессе работы сценария.
Если пользователь вводит неправильный номер посылки, приложение загружаетдеку BadlD.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="accept"> <go href="../PackageTracker/PTracker.wml"/> </do>
<p align="center">
Package<br/> Tracker<br/>
<br/>Unknown Package ID. Try again. <br/><br/>For this demo the only valid Package ID is AD12345
</p>
</card>
</wml>
Снова исходный код деки использует тег абзаца <р> для вывода сообщения обошибке.