基本的mod_perl问题

时间:2010-11-26 07:22:34

标签: apache mod-perl

我是Perl的新手。

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

print "hello";

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

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

<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提交请求,并调用此过滤器。

问题是,我如何以及在何处看到此过滤器的输出(hello)?

希望我的问题很明确。

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

感谢。

1 个答案:

答案 0 :(得分:0)

取决于你如何写它。按照你的代码,骨架应该看起来像

package MyApache2::FirstPerlProg;

use Apache2::Const qw(OK);
use Apache2::RequestRec;
use Apache2::RequestIO;

sub handler {
  my ($r) = @_;
  $r->content_type("text/html");
  $r->print("hello");
  return OK;
}

1;

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

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