Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: perl modules - условное включение  (Прочитано 7022 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 25-04-2005 18:03 » 

В perl пишу
use foobar;
Проблема в том, что модуль foobar в системе может отсутствовать. При этом функции из него не особо нужные и используются только при определенной комбинации настроек скрипта (то есть, могут и вообще не потребоваться пользователю). Поэтому хотелось бы грузить этот модель только в том случае, если это указано в настройках. Я не хочу заставлять пользователя править скрипт или ставить ненужный ему модуль. Как сделать условную загрузку? use внутри if нельзя. Что можно?
Записан

1n c0de we trust
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-04-2005 23:02 » new

Bспользуй require вместо use:
Код:
#!/usr/bin/perl

if (1 == 2)
{
    require xyz;
}
else
{
    print "xyz еще не тут!";
}

Можно проконтролировать загрузку и потом учесть это в коде, где модуль будет нужен.

Код: (Perl)

eval
{
    require xyz;
};

if ($@)
{
    # ошибка загрузки
}

# .............

if (exists $INC{'xyz'})
{
    # проверка, что модуль уже загружен и с ним можно работать
}
« Последнее редактирование: 27-12-2007 14:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines