2026年10月31日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
只看作者:洞房 查看全部
1000
Lv9有为九子能等级图标
勋章勋章勋章勋章勋章
帖子
9.3万
回复
2,089
积分
60.3万
注册
2006-12-06
[怀旧国机]

Perl与WAP-程序举例

[复制链接]
查看 141 回复 0
楼主 发表于 | 查看全部

程序举例

假设我们需要开发一个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”运算符,它使得子过

程返回

登录回复

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块