1

我是 Perl 的新手。

我写了一个非常简单的 Perl 程序(脚本):

print "hello";

当我在命令提示符下(使用命令 - perl first.pl)执行它时,它可以工作。

但是,当我在 apache 的“过滤器”中使用相同的 Perl 代码时,它不起作用。为了提供更多详细信息,我在 httpd.conf 文件中使用以下配置为 Apache Http Server 中的 URL 调用过滤器:

<Location /something.do>
      SetHandler modperl
      PerlResponseHandler MyApache2::FirstPerlProg
</Location>

FirstPerlProg.pm 文件(在 indigoampp\perl-5.12.1\site\lib\MyApache2 位置)与 first.pl 具有相同的代码。

index.html 页面(第一页)有一个表单,该表单将请求提交给 something.do 并调用此过滤器。

问题是,我如何以及在哪里看到这个过滤器的输出(你好)?

希望我的问题很清楚。

我知道我没有在此过滤器代码中将任何 HTTP 响应发送到浏览器,这就是为什么我在提交后得到“页面无法显示”的原因。但是我该怎么做是我不知道的。

谢谢。

4

1 回答 1

0

取决于你是怎么写的。按照您的代码,骨架应该看起来像

包 MyApache2::FirstPerlProg;

使用 Apache2::Const qw(OK);
使用 Apache2::RequestRec;
使用 Apache2::RequestIO;

子处理程序{
  我的 ($r) = @_;
  $r->content_type("text/html");
  $r->print("你好");
  返回确定;
}

1个;

这大概是 mod_perl 请求处理程序的最低要求。这应该是从请求返回的响应,应该在浏览器中看到它。你也可以使用Apache2::Log然后使用$r->log_error("text")发送到error_log。

如果您希望您的脚本运行 CGI-ish,请使用 ModPerl::Registry。

于 2010-11-27T00:39:46.507 回答