1

私はPerlの初心者です。

非常に単純な Perl プログラム (スクリプト) を作成しました。

print "hello";

コマンド プロンプトで実行すると (コマンド - perl first.pl を使用)、動作します。

しかし、Apache の「フィルター」で同じ Perl コードを使用すると、機能しません。詳細を提供するために、httpd.conf ファイルで次の構成を使用して、Apache Http サーバーで 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("こんにちは");
  OKを返します。
}

1;

これは、mod_perl リクエスト ハンドラの最低限度です。そして、これはリクエストから返されるレスポンスである必要があり、ブラウザに表示されます。Apache2::Logを使用して、次に を使用$r->log_error("text")して error_log に送信することもできます。

スクリプトを CGI 風に実行したい場合は、ModPerl::Registry を使用してください。

于 2010-11-27T00:39:46.507 に答える