основной вопрос mod_perl - PullRequest
1 голос
/ 26 ноября 2010

Я очень новичок в Perl.

Я написал очень простую Perl-программу (скрипт):

print "hello";

Когда я запускаю его в командной строке (с командой - perl first.pl), он работает.

Однако, когда я использую тот же Perl-код в «фильтре» apache, он не работает. Чтобы получить более подробную информацию, я вызываю фильтр для URL-адреса в Apache Http Server со следующей конфигурацией в файле httpd.conf:

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

Файл FirstPerlProg.pm (в indigoampp \ perl-5.12.1 \ site \ lib \ MyApache2 location) имеет тот же код, что и first.pl.

Страница index.html (первая страница) имеет форму, которая отправляет запрос чему-то, и этот фильтр вызывается.

Вопрос в том, как и где я вижу выходные данные этого фильтра (привет)?

Надеюсь, мой вопрос ясен.

Я знаю, что я не делаю HTTP-ответ для отправки в браузер с этим кодом фильтра, и поэтому я получаю сообщение «страница не может быть отображена» после отправки. Однако что мне делать, это то, чего я не знаю.

Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2010

Зависит от того, как вы это написали.Судя по вашему коду, скелет должен выглядеть так:

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.

...