|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 07 Aug 2002 14:58:11 To : "Andrey Kholyavkin" Subject : Re: require -------------------------------------------------------------------------------- Здравствуй, Andrey Kholyavkin. >>AK> Такой вот вопрос: скрипт вылетает с 500-й ошибкой через два раза AK> на >>AK> третий, так >>AK> как Undefined subroutine и т.д. Эта самая subroutine находится >>AK> отдельно в файле, который в это скрипте подключен так: >>AK> require "my-lib.pl"; AK> > >>AK> Вопрос: почему дома (win/apache) все работает ОК, а удаленно >>AK> (unix/apache) через раз подпрограммка ему неизвестна? >>AK> удут интересны любые подсказки и советы. Спасибо! AK> > AK> >Скорее всего, там mod_perl или FastCGI со всеми вытекающими. "А вы AK> так не AK> >делайте". А делайте как положено - модулем. AK> Спасибо за наводку! А можно чуток подробнее про "вытекающие"? Конкретные подробности я вот прямо сейчас без полного знания твоей ситуации не выдам, но суть в том, что будучи один раз required, my-lib.pl в этом процессе больше не загрузится ни разу. То есть не будет выполнен при следующем запуске любого скрипта, который его require, в том же процессе Apache. А функции, которые он предоставляет, окажутся в персональном пространстве имен того скрипта, который успел первым. Возможно еще, что пока этот скрипт не изменится и не будет перезагружен, после чего пропадут и оттуда. В других процессах порядок "успевания" может быть иным. Модуль тут спасает тем, что у него package описан явно (иначе это не модуль) и тем самым функции оттуда попадают в четко определенный namespace, откуда потом доступны всем скриптам. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/14454a6fd093b.html, оценка из 5, голосов 10
|