Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 mod_perl   Victor Antropov   06 Feb 2001 09:43:07 
 Re: mod_perl   Michael Samanov   09 Feb 2001 15:24:12 
 Re: mod_perl   Artem Chuprina   09 Feb 2001 20:14:05 
Архивное /ru.cgi.perl/79499856defc.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional