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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Ilia Vinokurov                       2:5020/400     16 Dec 2005  13:05:29
 To : All
 Subject : Как выгрузить модуль ?
 -------------------------------------------------------------------------------- 
 
 Hello, All!
 
 Задача - нужно в работающей программе подгружать модули и при этом
 отслеживать их mtime. При изменении времени модификации перегрузить модуль.
 За это у меня ответственны 2 метода:
 
 sub run_controllers {
   my($self, $type, $prm) = @_;
   $type = lc($type);
   my $c = $self->{'SUB_CONTROLLERS'}{$type};
   my $cmtime = $self->cTime($type);
   if( (not defined $c) || (not defined $cmtime) || ($c->[1]!=$cmtime) ){
     my $rStr = qq|
       require CONTROLLERS::$type;
       return CONTROLLERS::$type->new();
     |;
     $c->[0] = eval($rStr);
     return $@ if $@;
     $c->[1] = $cmtime;
     $self->{'SUB_CONTROLLERS'}{$type} = $c;
   };
   return $c->[0]->parseContent($prm);
 };
 
 # Возвращает время модификации модуля.
 sub cTime {
   my ( $self, $cName ) = @_;
   $cName =~ s/\:\:/\//gso;
   foreach my $path ( @INC ){
     my $fName = "$path/CONTROLLERS/$cName.pm";
     my @st = stat $fName;
     return $st[9] if scalar @st > 0;
   };
   return;
 };
 
 Проблема в том, что код импортируется и компилируется только в первый раз.
 Во второй раз (когда модуль модифицирован) код не заменяется на новый.
 Соответственно проблема в удалении старого пакета и подгрузке 
 модифицированного.
 
 Покопался в Apache::Registry так там используется
 undef &mysub;
 Как сделать undef PACKEGE я не знаю :-( use strict ругается по-черному :-)
 У кого имеются какие соображения ?
 С удовольствием наберу perldoc чего-нить, только чего ?
 
 With best regards, Ilia Vinokurov.  E-mail: ilvin@ilvin.msk.ru 
 --- ifmail v.2.15dev5.3
  * Origin: COMSTAR Telecommunications (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Как выгрузить модуль ?   Ilia Vinokurov   16 Dec 2005 13:05:29 
Архивное /ru.perl/121684fbbfbb4.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional