|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Michael Samanov 2:550/5068.1515 09 Feb 2001 15:24:12 To : Victor Antropov Subject : Re: mod_perl -------------------------------------------------------------------------------- Hello, Victor! At Tue, 06 Feb 01 08:43:07 +0300 Victor Antropov wrote: VA> Чем отличается сабж от CGI я в факе прочитал. Hо такой вопрос: Что представляет VA> собой скрипт - mod_perl или CGI, это решает исключительно сервер или в скрипт VA> нужно вносить необходимую пометку? Судя по факу mod_perl скрипт вполне может VA> быть интерпритирован как CGI-script. Модперловский скрипт отличается от простого CGI-шника, главным образом, тем, как его апач воспринимает на основе всяких там правил задания обработчиков. Hапример, можно написать так: <Files *.plm> SetHandler perl-script PerlHandler HTML::Mason </Files> и пошла, как говорится, вода в Туркмению. PerlHandler может быть какой попало, в том числе и самописный. Содержимое самого скрипта тогда может _очень_ сильно отличаться в зависимости от обработчика. Вот у меня, к примеру, обработчик выглядит так (реально): package MyLib::Handler; sub handler { my $r = shift; if($r->header_only) { $r->send_http_header; return Apache::Constants::OK(); } (my $file = $r->uri) =~ s!^.*/!!; $file =~ s!\.[a-z]+$!!; return Apache::Constants::NOT_FOUND() unless defined $INC{"MyLib/$file.pm"}; eval { no strict 'refs'; &{"MyLib::${file}::main"}($r); }; $r->log_error("Erroneous request: $file, \$\@: $@") if $@; $r->status; } 1; А сам скрипт тогда - обычный модуль MyLib::*, например (упрощенно): package MyLib::test; sub main { my $r = shift; my $filename = $r->filename; $filename =~ s!\.[a-z]+$!.tmpl!; $r->status(404), die "'$filename' not found" unless -f $filename; my $tmpl = HTML::Template->new(filename => $filename); $r->print($tmpl->output); } 1; Обращаешься по урлу .../test.html и получаешь результат обработки test.tmpl VA> PS: VA> Скажите, пожалуйста, какие библиотеки составляют основной инструментарий VA> эхотаг-программиста? А любые на твой вкус и решаемую задачу. CPAN большой, слава Богу. Sincerely yours, Michael (mailto:mike@vlink.ru). --- ifmail v.2.14 * Origin: Mike's home (2:550/5068.1515@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/79499856defc.html, оценка из 5, голосов 10
|