接受用户输入的信息,在服务器端用Perl语言把信息构造XML文件存储,读取时,用HTML表达出来,帮忙解释一下 20

例如:一个网页有一个form五个input(姓名,性别,年龄,身高,体重),访问者填写之后,信息被服务器端存储为XML文件(perl),然后解析此XML(perl),用表... 例如:一个网页有一个form五个input(姓名,性别,年龄,身高,体重),访问者填写之后,信息被服务器端存储为XML文件(perl),然后解析此XML(perl),用表格返回。关键是perl编程不能用XML或者HTML的parsers,只能用perl的regular expressions,也不许用perl libraries。

帮忙给个解释这种做法的链接也行, 现在是不知道怎么下手啊。
答得好再给加分。
展开
 我来答
talorkitty
2011-03-04 · TA获得超过771个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:442万
展开全部
复杂么?数据存储的时候把XML格式写得规范一些。读取的时候按照格式读。

CGI FORM 写入的例子:
## 先通过post方式读form数据 到 hash %formin 里 ,数据的有效性自己用个js验证一下就可以了,我就不写在perl里了。
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
my @in = split(/&/,$in);
foreach $i(@in){
($key,$val)=split(/=/,$i);
$val=~tr/+//;
$val=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$val=~s/\+{0,5}//eg;
$formin{$key}=$val;
}

## 要用>> 保证每次都是追加写入
open (WFH, ">>store.xml");
print WFH "<CONTENT>\n"; ## 用CONTENT来分隔每次表单提交时写入的数据
foreach (sort keys %formin){
print WFH, "\t<".$_."=".$formin{$_}."</".$_.">\n";
}
print WFH "</CONTENT>\n"; ## 最后这个\n的回车不可少
close (WFH);

## 读的脚本(用上面写好的格式)
open (RFH, "store.xml") || die "fail to open xml file $!";

while (my $line = <RFH>){
if ((not defined $record_start_flag) && ($line =~/^<CONTENT>/)){ ### 每个记录的开始
my $record_start_flag = 1;
}
elsif (defined $record_start_flag){ ## 开始读数据了
$line =~/^\t<(\w+)=(.*)>/;
## $1是字段名 $2是值
}
elsif ($line =~/^</CONTENT>/){ ### 每个记录的结束
undef $record_start_flag ;

## 读完一个记录之后再存储
}

}

close RFH;

## 上面是例子,具体数据读出来之后怎么用怎么存我没写。你可以搞个数组往里面push hash变量 等等等等,方法众多。
追问
假设我要写的五组key&val,存进去的格式是这样的:val1........然后以后每次输入新的用户时候会进入xml文件存储为新,也就是写入的时候先删除,再写....,然后读取的时候找val1,找对之后把一个user的全部信息列出来。帮忙写这些的代码吧,我写的服务器总是报错,不知哪里出错了。
追答
这样搞太复杂。你可以在存储数据时不要管那一级,等到需要读的时候,再将数据文件的前后加上这样你可以不必在每次存储数据时都要读一遍以前的数据来重写数据文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式