| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > ошибка use lib '...' |
| Автор: burakov 3.6.2013, 22:45 | ||
| Добрый день, захотелось подключить единый каталог для всех скриптов с самописными модулями но захотелось это сделать через переменные. я добился того, (с помощью модуля Cwd), чтобы путь был правильный реальный. (как тот, что заремарен в коде)
но с генерированным путем скрипт дает ошибку. Empty compile time value given to use lib at D:\temp\work_Pinii\change\start1.pl line 9. в то же время, как если прописать вручную use lib 'D:/temp/work_Pinii/lib' то все нормально. подскажите. как подключить свой каталог с модулями, при помощи переменной? почему выдается эта странная ошибка? спасибо |
| Автор: Pfailed 4.6.2013, 10:01 | ||
|
| Автор: DProf 6.6.2013, 16:52 | ||||
| Естественно не работает, это же происходит на разных стадиях. Исполнения кода еще не происходит (и переменная соответственно еще не инициализирована) в тот момент когда use lib вызывается. Подробнее о жизненном цикле программ на Perl в Главе 18 Программирование на Perl. А если указать самый простой путь, то это завернуть нужный код в блок BEGIN - если его Perl встречает, то тут же и исполняет (до компиляции оставшейся части кода).
Pfailed, а я что то не понял, причем здесь модуль use FindBin - это же
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51acf2f76ccc19fd7b000002#findElement_E7045_51b094296ccc191623000d24_0 |
| Автор: Pfailed 6.6.2013, 20:46 |
| DProf, при том, что делая getcwd () автор как раз и пытается "Locate directory of original perl script". На правах телепатии. |
| Автор: DProf 7.6.2013, 13:53 | ||||||||
Да, понял. Но вопрос же более общий был -
ответ:
ответ:
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51acf2f76ccc19fd7b000002#findElement_E7045_51b1bb8e6ccc19003f001701_0 |