2010-11-26 21 views
1

私はPerlにとって非常に初心者です。基本的なmod_perlの質問

は、私は非常に単純なPerlプログラム(スクリプト)を書いた:私は(コマンドで - perlのfirst.pl)コマンドプロンプト上で、それを実行すると

print "hello"; 

、それが動作します。

しかし、私はApacheの "フィルタ"で同じPerlコードを使用すると動作しません。

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

FirstPerlProg.pmファイル(indigoamppの\ perlの-5.12.1 \サイトの\ libに:より詳細な情報を提供するために、私は、httpd.confファイル内の設定を次のようにApache HTTPサーバでのURLのフィルタを呼び出しています\ MyApache2 location)はfirst.plと同じコードです。

index.htmlページ(最初のページ)には、something.doにリクエストを送信するフォームがあり、このフィルタが呼び出されます。

問題は、どのように、このフィルタの出力(hello)が表示されますか?

私の質問は明らかです。

私は、このフィルタコードでブラウザにHTTP応答を送信していないことを知っています。そのため、送信後に「ページを表示できません」という理由があります。しかし、私が何をするかは私が知らないものです。

ありがとうございました。

答えて

0

書いた方法によって異なります。あなたのコードで行く、スケルトンこれはmod_perlのリクエストハンドラのおおよそ最低限のだろう

 
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; 

のようになります。そして、これはリクエストから返ってきた応答でなければならず、ブラウザで見る必要があります。 Apache2::Logを使用し、$r->log_error("text")を使用してerror_logに送信することもできます。

スクリプトでCGI-ishを実行する場合は、ModPerl :: Registryを使用します。

+0

ありがとう、ジェレミー。私はこれを理解していますが、WebLogic Application Serverにデプロイされている "something.do" URLパターンの "servlet"も呼び出す必要があります。 –

+0

PerlResponseHandlerを使用すると、要求された「実際の」リソースが呼び出されず、代わりに応答自体が作成されます。私はちょうどフィルタの要求を変更し、要求されたリソースに応答生成部分を処理させたいと思っています... –

+0

私は他のフィルタ(PerlInputFilterHandler)を使用すると、ページがちょうどハングします - それは何度も繰り返し呼び出され、サーブレットにはなりません。 –