![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| GShadrin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Столкнулся с такой проблемой.
Есть программа на перле. Ей нужны определенные перл-модули. При отсутствии некоторых должна работать но с ограниченным функционалом. Программа запускается под Linux. Perl интерпретатор в случае если находит в коде use <имя модуля> выдает ошибку, мол модуль не установлен. Поэтому не удается реализовать работу с ограниченным функционалом, если модуль не установлен. Пытаюсь обрабатывать эту ситуацию следующим образом: use <имя модуля> || ( или or ) print "Работа в ограниченном режиме.......\n "; Ругается: syntax error at prog.pl line 22, near "use <имя модуля> or" Execution of prog.pl aborted due to compilation errors. Обращаю внимание, что запускаю в линуксе. Ранее в виндоусе я делал аналогичное следующим образом. Нужен был модуль Encode. Я не писал use Encode в начале программы, а в определенном месте, и до этого места перл не ругался (в отличие от перла, который как мне кажется если видит конструкцию use <модуль> в любом месте ругается не смотря на то, что выполнение не дошло до этого места). Как реализовать работу с ограниченным функционалом в линуксе? |
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: 14 Всего: 17 |
our %loaded;
BEGIN{ $loaded{'Encode'} = eval 'require Encode; Encode->import(); 1'; } Строчку с загрузкой повторить нужное число раз. В результате в хеше %loaded по ключу Encode будет 1, если модуль загружен, или under, если не загружен. Ваш метод не работает потому, что директива use - директива времени компиляции, а || ... - попыталась бы перехватить ошибку во время исполнения. Поэтому эта конструкуция и запрещена. А здесь используется require вместо use, и BEGIN блок для того, чтобы переместить всю работу на этап компиляции. |
|||
|
||||
| GShadrin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Спасибо за помощь.
Все получилось. Это сообщение отредактировал(а) GShadrin - 23.11.2009, 19:04 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |