1
回答
Perl 动态网页CGI入门1- HelloWorld 收藏
华为云实践训练营,热门技术免费实践!>>>   

原创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程序,必须先安装ActivePerlActivePerlActiveState公司开发的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,该安装包可以从下面这个页面上下载到。

http://httpd.apache.org/

同样是默认安装目录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

print

   $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";

举报
范堡
发帖于9年前 1回/4K+阅
顶部