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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     02 Aug 2005  13:07:25
 To : Andrei Protasovitski
 Subject : Re: Снова подключение модулей во время вып о лнения
 -------------------------------------------------------------------------------- 
 
 Andrei Protasovitski -> Yurik shestakov  @ Tue, 02 Aug 2005 08:45:44 +0400:
 
  >> AP> if (нужен модуль Module::Name) {
  >> AP>    require Module::Name;
  >> AP>    # создание объектов и переменных (инициализация)
  >> AP> }
  >> [...]
  >> AP> Хотелось бы вынести все, что находится между фигурных скобок, в 
  >> AP> отдельный файл и написать такую процедуру, которая подгружала бы модуль 
  >> AP> и запускала бы инициализацию. Однако что-то у меня ступор от жары: 
  >> AP> модуль подгружается, но переменные не видны.
  >> AP> Может, кто-нибудь решал подобную проблему?
  >> А ты попробуй явно позвать функцию Module::Name::import()
  >> Или неявно через eval "use $package_name";
  >> По крайней мере логично было бы специфичную для модуля инициализацию
  >> вынести в sub import {}
 
  AP> Да модуль грузится через require без лишних телодвижений. Проблема в 
  AP> том, что созданные объекты и переменные видны только в пределах 
  AP> подгружаемого файла.
 
  AP> Первое, что пришло в голову:
 
  AP> [-=cut=-]
  AP> my $separator = $/;
  AP> undef $/;
  AP> open(SCRIPT, "path/to/the/script.pl") or die "Cannot load the script: $!";
  AP> my $script = <SCRIPT>;
  AP> eval $script;
  AP> $/ = $separator;
  AP> [-=cut=-]
 
  AP> В принципе, можно написать процедуру, возвращающую $script. Как правило, 
  AP> код инициализации небольшой, так что большой нагрузки на память не будет.
 
 Рекомендую вместо этого почитать умную книжку про perl.  my-переменные
 таки да, будут видны только в пределах файла, но это фича, а не баг.
 Вышеупомянутым способом ты старательно раскладываешь себе грабли.
 Вместо того, чтобы использовать our, если нужны глобальные переменные.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 Вам правду резать или кусочком?
   Кнышев
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Re: Снова подключение модулей во время вып о лнения   Artem Chuprina   02 Aug 2005 13:07:25 
Архивное /ru.perl/25606ef392335.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional