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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alex Krivospitsky                    2:5023/37.13   04 Jun 2003  11:30:22
 To : Jahor Miadzviedziew
 Subject : plugins: how to?
 -------------------------------------------------------------------------------- 
 
 
  Как-то вечером 03 Июн 03 , Jahor писал всем
 
  JM> прочего хочется сделать такую вещь: при запуске скрипт сканирует
  JM> определенный каталог на наличие в нем файлов, файлы из себя
  JM> представляют плагины, которые на выходе отдают сформированный отчет.
  JM> как такое реализуется?
 
 я это сделал так:
 
 загружаю плагины:
 
 my @plugins;
 LoadPlugins();
 
 sub LoadPlugins
 {
     opendir DIR, 'plugins';
     my @plugins_files=grep {/^pt_.+\.pm$/} readdir DIR;
     closedir DIR;
 
     foreach my $plugin_name (@plugins_files)
     {
         $plugin_name="plugins::$plugin_name";
         $plugin_name=~s/\.pm$//;
         eval "use $plugin_name";
 
         my $plugin=new $plugin_name;
         push @plugins, $plugin;
     }
 }
 
 потом по мере необходимости вызывал примерно так:
 
 foreach my $plugin (@plugins)
 {
     if (UNIVERSAL::can($plugin, 'Startup')!=undef)
     {
         $plugin->Startup;
     }
 }
 
 сам плагин выглядит примерно так:
 
 package plugins::pt_empty;
 
 use strict;
 
 sub new
 {
     my $class_name=shift;
     my $self={};
     bless($self, $class_name);
 
     return $self;
 }
 
 sub Startup
 {
     my $self=shift;
     ..........
     ..........
 }
 
 т.е. это класс с заранее описанным интерфейсом. вданном случае есть функция
 Startup, которая потом вызывается для всех плагинов. по аналогии пишутся и
 остальные необходимые функции.
 Доброе утро.
     *Шурик*.
 
 --- =[ TEAM _ITD_ ]=[ TEAM _Beer_ ]=[ TEAM _ВыСПаТьСя Бы_ ]=[ TEAM _JT_ ]=
  * Origin: *+79036960762* _alex_itd@mail.ru_ (2:5023/37.13)
 
 

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

 Тема:    Автор:    Дата:  
 plugins: how to?   Jahor Miadzviedziew   03 Jun 2003 18:42:08 
 Re: plugins: how to?   Igor S Chencov   04 Jun 2003 10:34:19 
 plugins: how to?   Alex Krivospitsky   04 Jun 2003 11:30:22 
 Re: plugins: how to?   Mikhail Polykovsky   08 Jun 2003 17:30:27 
 plugins: how to?   Alex Krivospitsky   08 Jun 2003 20:28:00 
Архивное /ru.perl/33073edda143.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional