Forum Webscript.Ru

Программирование => Perl => Тема начата: DartSidius от 19 Апреля 2007, 05:45:25

Название: Динамическое подключение модулей...
Отправлено: DartSidius от 19 Апреля 2007, 05:45:25
Есть такой код..примерно...

@mod = (\'a\',\'b\',\'c\');

foreach(@mod) {
   require "$_\\.pm";
   my $ans = &exe("param");
}

т.е. грубо говоря...есть набор модулей, подключающихся динамически...они все имеют одну структуру...у них есть подпрограмма exe которая выполняется...

собственно в чём вопрос...когда первый модуль a.pm подключился, то в скрипт подгружается автоматом sub exe....при подключении модуля b.pm ссылаться продолжает на первый sub exe...вот и вопрос, как или обнулять, или выгружать модуль, чтобы sub exe новый появлялся?...такое возможно, или заводить обязательно уникальное имя sub\'a?
Название: Динамическое подключение модулей...
Отправлено: arto от 19 Апреля 2007, 08:50:20
нет. квалифицируйте через имя пакета.
Название: Динамическое подключение модулей...
Отправлено: DartSidius от 19 Апреля 2007, 11:14:30
Цитировать
arto:
нет. квалифицируйте через имя пакета.


т.е. заводить уникальные имена sub\'ов?
Название: Динамическое подключение модулей...
Отправлено: arto от 19 Апреля 2007, 11:30:36
# for i in a b c d; do print -l "package $i;" "sub exe () { print \\"test $i\\"; }" "1;" >| $i.pm; done
# perl -le \'foreach (@ARGV) { require "$_.pm"; $_->exe (); }\' a b c d
test a
test b
test c
test d
#