2010-11-26 77 views
1

我对Perl很新手。基本mod_perl问题

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

print "hello"; 

当我执行它在命令提示符(带命令 - perl的first.pl),它的工作原理。

但是,当我在apache的“过滤器”中使用相同的Perl代码时,它不起作用。为了提供更多的细节,我调用过滤器在Apache HTTP服务器的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提交请求并调用此过滤器的表单。

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

希望我的问题很清楚。

我知道我没有在这个过滤器代码中向浏览器发送任何HTTP响应,这就是为什么我提交后'页面无法显示'的原因。然而,我该做什么是我不知道的。

感谢。

回答

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。

+0

谢谢杰里米。我有点想通了,但是我想调用“servlet”以及部署在WebLogic Application Server上的“something.do”URL模式。 – 2010-11-27 12:00:15