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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     02 Aug 2005  17:50:42
 To : Andrei Protasovitski
 Subject : Re: Снова подключение модулей во время вып  о лнения
 -------------------------------------------------------------------------------- 
 
 Andrei Protasovitski -> Artem Chuprina  @ Tue, 02 Aug 2005 13:57:01 +0400:
 
  >>  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> $!";
  >>  AP> my $script = <SCRIPT>;
  >>  AP> eval $script;
  >>  AP> $/ = $separator;
  >>  AP> [-=cut=-]
  >>  AP> В принципе, можно написать процедуру, возвращающую $script. Как
  >>  AP> правило, код инициализации небольшой, так что большой нагрузки на
  >>  AP> память не будет.
  >> Рекомендую вместо этого почитать умную книжку про perl.  my-переменные
  >> таки да, будут видны только в пределах файла, но это фича, а не баг.
 
  AP> Кто бы спорил.
 
  >> Вышеупомянутым способом ты старательно раскладываешь себе грабли.
 
  AP> Какие? Я не вижу потенциальных трудностей. Покажи.
 
 Таким образом ты фактически делаешь my-переменные глобальными.
 
  >> Вместо того, чтобы использовать our, если нужны глобальные переменные.
 
  AP> Я не хочу использовать глобальные переменные, в том-то и дело, хотя, 
  AP> похоже, придется.
 
 Можно оформить включаемый файл как модуль и импортировать из него только
 то, что надо.  Hу и в нем разрешать импортировать только то, что
 можно...  Есть в принципе и другие альтернативы, все зависит от задач.
 Так, объекты в использующем библиотеку скрипте обычно получают в
 качестве возвращаемых значений функции.  А то, что создавалось там
 внутри, снаружи видеть ни к чему.
 
 -- 
 Artem Chuprina
 RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
 
 If it's there and you can see it---it's real
 If it's not there and you can see it---it's virtual
 If it's there and you can't see it---it's transparent
 If it's not there and you can't see it---you erased it!
   IBM poster explaining virtual memory, circa 1978
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

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