当前位置:早雪网网络学院编程文档Perl → Perl CGI 程式写作常问问题集(4)程式设计疑难杂症

Perl CGI 程式写作常问问题集(4)程式设计疑难杂症

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 10:54:59
标签,要如何叫出 Perl CGI 程式?
您可以直接去打开该 CGI 程式的 URL: 

http://some.machine/cgi-bin/your_program.pl
您也可以在文件中使用连结的方式,例如: 

    print "Status: 204 No Content\n\n";
    print '除非您的浏览器不支援状态码 204 ,否则您不该看到这部份' , "\n";
} else {
    #
    # Process Data Here
    #
}


--------------------------------------------------------------------------------

Q4.22: 那些server 回应码 (server response codes)是干什麽用的?有什麽意义?
CGI 程式可以传送 server 然後 server 会把它转送给浏览器。例如: 假设您想送 ``No Content'' (意思是告诉浏览器不要再重新下载该网页),那麽您得送一个 204 的回应码(见上例)。 



--------------------------------------------------------------------------------

Q4.23: 为什麽 print "Location: http://host/page.html\n" 不 work?又为什麽它只 work 一次,但随後的转向就都弄错了呢? 
CGI 程式只能送一个 Location 标头。还有,如果您要 server 做转向的 动作您就不该送 MIME 类别。譬如,以下的例子是错误的示范,尽管在有些 servers 上行的通: 

#!/usr/local/bin/perl -w

.
.
.
print "Content-type: text/plain\n"
print "Location: http://some.machine/some.doc\n\n"";


--------------------------------------------------------------------------------

Q4.24: 要如何让 server 在每个 HTML 网页的底部都自动加上一个:「最近更新日期: ...」的告示?或者,是不是只有 SSI 的网页才能这麽做?CGI 程式的日期要如何取 得?
如果您是透过 CGI 以动态方式来产生您的文件,那麽要插入一个时间标记非常简 单。以下是一例(仅适用於 Perl 5): 

$last_updated = localtime;
print '最近更新日期: ', "$last_updated\n";

或者是: 

require "ctime.pl";

$last_updated = &ctime(time);
print '最近更新日期: ', "$last_updated\n";

甚至像这样: 

chop($date = `/usr/local/bin/date`);
print '最近更新日期: ', "$last_updated\n";

您可以用 SSI 来达到这个效果,像这样: 

<--#echo var="LAST_MODIFIED"-->

--------------------------------------------------------------------------------

Q4.25: 什麽样的场合下以 Perl 写 CGI 程式会显得太小题大作,因为用 shell 就可以做到?而什麽样的场合对 Perl 来说又过於困难?用 C++ 做这类的事不是好得多吗?那用 C 呢?
每一个语言都有其长处和短处。相信这句话您听过很多次了。所以一切全看您要做 的是什麽而定。如果您预期正准备写的 CGI 程式每个钟头会有几千几万人次连去 使用,那麽您应该选用 C 或 C++来写。如果您求快的话(指发展所花费的时间而言), 那麽 Perl 是正确的选择! 

一般说来,您应避免用 shell 来做任何形式的 CGI 程式设计,因为 shell 在先 天上容易产生安全问题。 

Tags:Perl,CGI,程式,写作,常问,问题,程式,设计,疑难杂症
[数据载入中...] [返回上一页] [打 印]