1

我已经运行了这个 Perl 代码:

#!/usr/bin/perl
print "content-type: text/html \n\n";
print "Hello World.\n";

我尝试了两种方式,第一种是Testing your Perl installation,但是当我用这种方式运行时,它有一些麻烦,它要求我选择一个可以运行它的程序,但还没有运行。

第二种方法是使用 Perl IDE Padre 的第一个脚本,但是当我编写 Perl 代码并尝试保存它时,它没有显示 Perl 文件的扩展名,所以我无法将它保存为 Perl 文件,我该怎么办?

4

1 回答 1

1

您的代码看起来像您想要一个CGI程序。CGI 意味着您通过网络浏览器调用您的程序并返回一个网站。虽然 vstm 的评论当然适用于非 cgi 程序,但您的示例需要更多的东西才能像那样工作。

您将需要安装一个 Web 服务器。看看xampp。它易于安装和维护,并带有 mysql 和 apache 安装。我推荐精简版,因为它没有所有开销。

安装后,您需要进行一些配置,以便它可以运行您的 perl 脚本。我认为你已经安装了 Active Perl。然后,您需要调整 apache 配置。

c:\xampp\apache\conf\httpd.conf你需要找到说

<Directory "C:/xampp/htdocs">

并阅读评论(标有#)。您必须ExecCGI在该<Directory>部分内添加。对您希望运行 perl 脚本的每个目录执行此操作。然后找一行写着

AddHandler cgi-script .cgi .pl .asp

并确保它没有被注释掉。

完成后,将程序放在c:\xampp\htdocs文件夹中(cgi-bin应该也可以),并将shebang-line(第一行#!)更改为安装 Active Perl 的位置,例如C:\perl\bin\perl.exe. 它告诉 apache 它应该使用什么程序来执行 perl 脚本。

此外,在您的代码中添加更多行:

#!C:\perl\bin\perl.exe
use strict;
use warnings;
use CGI;
use CGI::Carp('fatalsToBrowser');
print "Content-type: text/html \n\n";
print "Hello World.\n";

现在您需要运行 apache Web 服务器。在 xampp 安装目录中有几个控制 apache 和 mysql 的批处理文件。还有一个xampp-control.exe。运行。在新窗口中,单击Apache 旁边的开始按钮。

在您的浏览器中,转到http://localhost/<yourscript.pl>。它现在应该说“Hello World!”。

如果没有,请确保您没有运行 Skype。它会阻止 apache 尝试在其上运行的端口 80。您需要将 apache 的端口更改为其他内容。请参阅此视频


关于我所做的代码更改及其作用的几句话:

  • use strict;应该始终在您的代码中。它迫使您遵守某些准则并编写更好的代码。这在Hello World程序中可能看起来很奇怪,但无论如何请这样做。
  • use warnings;告诉你可能出错的事情。警告不是错误,而是 perl 对您可能不了解的内容有所帮助。用它。
  • use CGI使程序的输出转到 Web 服务器。当您使用 CGI 程序时,您需要它。
  • print "Content-type: text/html \n\n";是必需的,因此浏览器知道会发生什么。在这种情况下,一个 HTML 网站。它被称为HTTP -Header 并包含一个 mime 类型。
  • use CGI::Carp('fatalsToBrowser');使错误转到浏览器。没有它,除非你查看 apache 的错误日志,否则你永远不会知道它们。
于 2012-06-07T08:38:21.340 回答