原创ZengYuetian, 转载请注明出处http://blog.csdn.net/yuetiantian
一直想学习如何用Perl来开发动态网页,但是苦于找不到合适的入门教程。偶然在网上看到了老外的一份教程,里面比较详细地介绍了如何在web server上运行Perl编写的CGI脚本。不过他里面有些步骤被省略了,倒腾了一阵终于可以在自己的本本上运行HelloWorld了,十分高兴,赶紧记录下来,希望对大家有点用处。
原文请参见http://inconnu.islug.org/~ink/perl_cgi/index.html
安装Perl
我的本本是Windows XP操作系统,为了让它能够运行Perl程序,必须先安装ActivePerl。ActivePerl是ActiveState公司开发的Win32平台的Perl开发环境。我装的是5.10.0版本的,安装包可以从下面这个页面上下载到。
http://www.activestate.com/Products/activeperl/index.mhtml
默认是安装到C:\Perl目录下,CGI模块会被默认安装。
安装Apache
为了运行Web程序,必须要有Web服务器,在Windows上,我安装了Apache http server 2.2,该安装包可以从下面这个页面上下载到。
同样是默认安装目录C:\Program Files\Apache Software Foundation\Apache2.2,安装完毕后不用做任何特殊的设置。注意安装目录下有个cgi-bin目录,这就是以后我们的Perl脚本放置的位置,这里面已经有一个Perl脚本printenv.pl了,你可以通过
http://localhost/cgi-bin/printenv.pl来访问它。你会得到类似如下的页面内容。
COMSPEC="C:\WINDOWS\system32\cmd.exe"
DOCUMENT_ROOT="C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
HTTP_ACCEPT_LANGUAGE="en-us,en-securid;q=0.5"
HTTP_CONNECTION="keep-alive"
HTTP_HOST="localhost:8080"
HTTP_KEEP_ALIVE="300"
HTTP_USER_AGENT="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"
PATH="C:\Perl\site\bin;C:\Perl\bin; C:\WINDOWS\system32;C:\WINDOWS;C:\IUWORK;C:\WINDOWS\System32\Wbem;C:\OSHook\CPSTools;C:\OSHook\CPSTools\SysInternals;c:\OSHook\CPSTools\WInXPSupportTools;C:\Program Files\UltraEdit;C:\Program Files\Java\jdk1.6.0_10\binC:\PROGRA~1\F-Secure\ssh;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\OSHook\CPSTools;C:\OSHook\CPSTools\SysInternals;c:\OSHook\CPSTools\WInXPSupportTools"
PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH"
QUERY_STRING=""
REMOTE_ADDR="127.0.0.1"
REMOTE_PORT="1750"
REQUEST_METHOD="GET"
REQUEST_URI="/cgi-bin/printenv.pl"
SCRIPT_FILENAME="C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/printenv.pl"
SCRIPT_NAME="/cgi-bin/printenv.pl"
SERVER_ADDR="127.0.0.1"
SERVER_ADMIN="admin@xxx.com"
SERVER_NAME="localhost"
SERVER_PORT="80"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SIGNATURE=""
SERVER_SOFTWARE="Apache/2.2.11 (Win32)"
SYSTEMROOT="C:\WINDOWS"
WINDIR="C:\WINDOWS"
简单HelloWorld
环境准备好后就可以编写我们的第一个CGI脚本了。新建一个helloworld.pl, 输入如下的内容:
#!c:/Perl/bin/perl.exe
print "Content-type: text/html\r\n\r\n";
print "\n";
print "\n";
print "\n";
print "
print "\n";
print "\n";
exit (0);
其中的第一行,很重要,它告诉web server到什么地方去找perl解释器,其他的内容你已经很熟悉了,就是输出web页面的内容,把它保存后放到cgi-bin目录里面,然后用
http://localhost/cgi-bin/helloworld.pl来进行访问,helloworld就出现啦,爽吧!
4. 高阶HelloWorld
当然你更可以使用Perl提供的CGI模块来编写你的HelloWorld页面,用下面的内容替换掉你刚才helloworld.pl中的内容。
#!c:/Perl/bin/perl.exe
# It's always a good idea to use the strict pragma while developing
# Perl code, it makes Perl warn about dangerous code
use strict;
# We're also going to include the CGI module, so that we can take
# advantage of other programmer's efforts (One of Larry Wall's basic
# tennants is that programmers are fundamentally lazy -- he's probably
# right, but I can't be bothered to prove it right now)
use CGI;
# instantiate a new CGI object
my $cgi = new CGI;
# perform a single print statement, with liberal use of the perl
# string concatenator "." and some CGI methods
$cgi->header .
$cgi->start_html('Hello World!') .
$cgi->h1('Hello World!') .
$cgi->end_html;
# Tell the webserver everything is fine
exit (0);
再同样通过http://localhost/cgi-bin/helloworld.pl来进行访问,哈哈,怎么样,是不是很简单?好,让我们在下节课里面看看CGI还能干些什么。
Hello World!
\n";