一个急需高手回答的问题,急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!如果得不到正确答案便信心再学下去............
if($ENV{'REQUEST_METHOD'}eq"POST")
{
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
}
elsif($ENV{'REQUEST_METHOD'}eq"GET")
{
$buffer=$ENV{'QUERY_STRING'};
}
#分割用户提交的数据
@pairs=split(/&/,$buffer);
#对用户提交的数据进行解码
foreach $pair(@pairs)
{
($name,$value)=split(/=/,$pair);
$value=~tr/+/ /;
$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$name=~tr/+/ /;
$name=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
#输出html档头
print"Content-type:text/html\n\n";
#输出html页面的开始部分
print<<END;
<html>
<head>
<title>用户留言板</title>
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<h3>用户留言板</h3>
<hr>
</div>
END
#检察用户的输入
if($FORM{'name'}eq""){
print<<NAME;
<center>
对不起,请输入<b>您的姓名</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
NAME
exit;
}#end if
if($FORM{'E-mail'}eq""){
print<<E-MAIL;
<center>对不起,请输入<b>您的E-mail</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
exit;
}#end if
if($FORM{'comment'}eq""){
print<<COMMENT;
<center>对不起,请输入<b>您的留言</b>!
<a href="/guest.html"onClick=history.back()>点这儿返回</a>。
</center>
COMMENT
exit;
}#end if
#把用户输入的回车换行转换为HTML中的换行
$FORM{'comment'}=~s^cM\n/<br>\n/g;
#把用户输入的空格转换为HTML中的空格
$FORM{'comment'}=~s/ / /g;
#获取当前时间
($sec,$min,$hour,$day,$mon,$year)=localtime(time);
#localtime函数获取的月份比实际月份少1,因此这里要加1
#年份比实际的年份少1900,因此这里要加1900
$mon++
$year=$year+1900;
$date="$year年$mon月$day日$hour时$min分$sec秒";
#产生一个0到1之间的随机数
srand;
$num=rand(1);
#指定保存留言的文件,注意用绝对路径
$filename="d:/abc/msg.html";
#以只读方式打开msg.html,读出原文中的所有数据。
open(FILE,"<$filename");
@old_content=<FILE>;
close(FILE);
#以覆盖的方式打开msg.html,写入最新的数据。
open(FILE,">$filename");
Print FILE<<MSG;
<p>
<b>我的姓名</b>:$FORM{'name'}
<br>
<b>我的e-mail</b>:<a href="mailto:$FORM{'E-mail'}">$FORM{'E-mail'}</a>
<br>
<b>我来自于</b>:$ENV{'REMOTE_ADDR'}
<br>
<b>留言时间</b>:$date
<br>
<b>我的留言如下</b>:
<br>
$FORM{'comment'}
</p>
<hr>
MSG
#写入原文件中的所有数据。
Print FILE"@old_content";
close(FILE);
#输出留言结束的页面
Print<<THANKS;
<p align="center">
感谢您在本站留言,
<a href="/guest.html"onClick=history.back()>请点这儿返回</a>。
</p>
<p align="center">
<a href="/msg.html?$num">看留言板</a>
</p>
THANKS
#输出页面结束标签
Print<<ENDHTML;
</body>
</html>
ENDHTML
#退出程序
exit
错误如下:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Can't find string terminator "E" anywhere before EOF at D:\abc\guest.pl line 53.
我已经从头到底看了两遍代码,麻烦大家帮我看看,错在哪里???
相关推荐
Cherry-Studio-CN-2.1.6-win-x64-setup.exe
Cherry-Studio-CN-2.1.6-win-x64-setup.exe
【高速电路设计】基于协议的板级布局指南:差分信号完整性与电源热管理协同优化方案
内容概要:本文档详细介绍了规格补充学习,并在实际项目中配合仿真工具与实测手段进行验证。
《AutoCAD 机械工程基础教程2014版》课件+教案+教学大纲
《AutoCAD 机械工程基础教程2014版》课件+教案+教学大纲
国央企创新负责人如何借助平台实现创新资源的高效协同配置?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
基于小波分析的小电流接地系统单相接地故障选线仿真【仿真+说明文档+说明PPT】
基于小波分析的小电流接地系统单相接地故障选线仿真【仿真+说明文档+说明PPT】内容概要:本文围绕一个多机器人路径规划(Multi-Agent Path Finding, MAPF)的MATLAB代码库进行系统性解读,重点阐述了基于优先级规划(Prioritized Planning, PP)的求解框架。该框架采用四层架构设计——几何解析、拓扑构建、调度规划与可视化呈现,实现了从地图输入到无冲突路径输出的完整流程。核心技术包括动态边权膨胀机制以缓解硬封锁带来的不可解问题、节点预留历史结构提升冲突查询效率、几何惩罚驱动的局部同步策略降低时间复杂度,以及基于Petri网的两阶段整数规划方法用于判定解的存在性与优化路径序列。文章还详细分析了三种时间同步策略的取舍、交换冲突的处理机制及可视化链路的设计实现,强调了工程实践中信息前移、模块解耦与可维护性的重要性。; 适合人群:具备一定算法基础和MATLAB编程能力,从事路径规划、多智能体系统、机器人调度等相关领域的科研人员与研究生。; 使用场景及目标:① 学习和复现多机器人路径规划中的优先级规划算法及其工程实现;② 理解动态边权膨胀、节点预留、局部同步等关键技术如何提升算法效率与鲁棒性;③ 借鉴模块化框架设计思想,应用于仓储物流、无人机编队、自动驾驶等实际场景的路径规划系统开发;④ 利用提供的可视化工具进行算法行为分析与教学演示。; 阅读建议:建议读者按照文中所述的数据流顺序逐步研读各模块,重点关注各层之间的接口设计与不变量约束,结合代码实践调试不同地图与智能体规模下的运行效果,并尝试调整惩罚权重、同步策略等参数以深入理解算法性能边界。


