×

Loading...
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。

运行一个很简单的Perl程序却出错,何故?

test.htm
<a href="http://superman/cgi-bin/test.pl">Test App </a>

test.pl
print "Welcome!";

先运行test.htm, 再点击Test App ,出现以下提示:
CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

Welcome!

我在DOS Command 窗口里运行perl test.pl, 出现正确文字,没有任何错误提示。

运行环境 Win 2000 server + IE 6.0 + ActivePerl 5.6(均为英文版)
我已经在WIN 2000 注册表的HKEY_LOCAL_MACHINE\System\Currentcontrlset \Services\W3svc\Parameters\ScriptMap\目录里,
在右边栏中增加以下的键值:分别加入键名“.cgi”、“.pl”,键值均为“e:\perl\bin\perl.exe %s %s”
对cgi-bin目录也给于读写执行等权限.

请指点,谢谢。
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 运行一个很简单的Perl程序却出错,何故?
    test.htm
    <a href="http://superman/cgi-bin/test.pl">Test App </a>

    test.pl
    print "Welcome!";

    先运行test.htm, 再点击Test App ,出现以下提示:
    CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

    Welcome!

    我在DOS Command 窗口里运行perl test.pl, 出现正确文字,没有任何错误提示。

    运行环境 Win 2000 server + IE 6.0 + ActivePerl 5.6(均为英文版)
    我已经在WIN 2000 注册表的HKEY_LOCAL_MACHINE\System\Currentcontrlset \Services\W3svc\Parameters\ScriptMap\目录里,
    在右边栏中增加以下的键值:分别加入键名“.cgi”、“.pl”,键值均为“e:\perl\bin\perl.exe %s %s”
    对cgi-bin目录也给于读写执行等权限.

    请指点,谢谢。
    • You need to stick a header at the very beginning and a blank line seperating it from the html body, like this:
      print <<END_of_Multiline_Text;
      Content-type: text/html

      <HTML>
      <HEAD>
      <TITLE>Welcome!</TITLE>
      </HEAD>
      <BODY>
      <H1>Welcome!</H1>
      </BODY>
      </HTML>

      END_of_Multiline_Text
    • 干吗用window 跑perl啊? hehe, anyway, 输出第一行一定要:是 print "content-type: text/html\n\n";
    • 你需要给出HTML的Header
      每个HTML都需要一个HTML Header, 如果是HTML文本文件, Webserver会自动加一个, 如果是CGI程序, 你需要自己加. 不过大家一般用CGI.pm.

      试一下这个:
      test.htm:
      <HTML>
      <HEAD><TITLE>Test Perl Program</TITLE></HEAD>
      <BODY>
      <H2>This is a Perl test program.</H2>
      <a href="http://superman/cgi-bin/test.pl">Test App </a>
      </BODY>
      </HTML>

      test.pl:

      print "Content-Type: text/html\n\n",
      "<HTML><HEAD>",
      "<TITLE>Perl Program: test.pl</TITLE>",
      "</HEAD>",
      "Welcome!",
      "</BODY>",
      "</HTML>";

      如果用CGI.pm:
      test.pl:

      use strict;
      use CGI;
      my $cgi = CGI->new;
      print $cgi->header(),
      $cgi->start_html(-title=>"Perl CGI Program: Test.pl"),
      $cgi->b("Welcome!"),
      $cgi->end_html();

      参照一下ActivePerl的CGI的手册。

      第一次回答问题,献丑了!

      Hunter