Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работоспособность use, не могу подключить свой путь в @ISA 
:(
    Опции темы
myth777
Дата 2.4.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 30.3.2009

Репутация: -1
Всего: -1



Всем доброй ночи.
Создал пакет, залил его в cgi-bin/lib/mlib.pm

не могу подключить свой путь в @ISA
делаю 
Код

unshift(@INC,  $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/");
use mlib;

пишет
Код

Can't locate mlib.pm in @INC (@INC contains: C:/server/Perl/site/lib C:/server/Perl/lib .) at C:\Server\wwwroot\cgi-bin\test.pl line 7.
BEGIN failed--compilation aborted at C:\Server\wwwroot\cgi-bin\test.pl line 7.

Получается что 
Код

unshift(@INC,  $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/");
 не срабатывает?
Как бороться?

PM MAIL   Вверх
tolkien
Дата 3.4.2009, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



вы книжек чтоли не читаете? 

попробуйте так 
use lib qw(/cgi-bin/lib/);
PM MAIL   Вверх
pompei
Дата 3.4.2009, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



Цитата(tolkien @ 3.4.2009,  02:15)
вы книжек чтоли не читаете? 

попробуйте так 
use lib qw(/cgi-bin/lib/);

точнее так
use lib "полный путь до /cgi-bin/lib";

ну или
use lib qw(полный путь до /cgi-bin/lib);

и ниже уже
use mlib;


Это сообщение отредактировал(а) pompei - 3.4.2009, 06:34
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
myth777
Дата 3.4.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 30.3.2009

Репутация: -1
Всего: -1



Чтож  tolkien умный такой! Наверное не спрашивал бы если бы все так просто было бы. Для чего тогда форум нужен? Наверное для вапросов Вам не кажется так?
вобщем на 
Код

  use lib qw( "/cgi-bin/lib");
  #  use lib qw( "c:/server/wwwroot/cgi-bin/lib"); на это тоже дурниной орет
    use mlib;

получаем
Код

Can't locate mlib.pm in @INC (@INC contains: "/cgi-bin/lib" C:/server/Perl/site/lib C:/server/Perl/lib .) at C:\Server\wwwroot\cgi-bin\test.pl line 9.
BEGIN failed--compilation aborted at C:\Server\wwwroot\cgi-bin\test.pl line 9.


Добавлено через 2 минуты и 14 секунд
Да и полный путь я не могу указывать, так как на сервере другая структура какталогов.
Если можно относительный указать то как?
Такое
Код

  use lib $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/");

компилятор не понимает..
PM MAIL   Вверх
myth777
Дата 3.4.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 30.3.2009

Репутация: -1
Всего: -1



Вобщем кому интересно как все же нужно подключать модули на стадии компиляции - 
Код

BEGIN { unshift(@INC, $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/") }
  

А не 


вы книжек чтоли не читаете? 

попробуйте так 
use lib qw(/cgi-bin/lib/);

PM MAIL   Вверх
pompei
Дата 9.4.2009, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 2
Всего: 6



1) Проверьте есть ли у файла mlib.pm в конце 1;
2) Существует ли файл c:/server/wwwroot/cgi-bin/lib/mlib.pm

Добавлено через 1 минуту и 59 секунд
Цитата(myth777 @ 3.4.2009,  16:45)
Вобщем кому интересно как все же нужно подключать модули на стадии компиляции - 
Код

BEGIN { unshift(@INC, $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/") }
  

А не 


вы книжек чтоли не читаете? 

попробуйте так 
use lib qw(/cgi-bin/lib/);

Ну если работает это, то вот это тоже будет работать
Код

use lib $ENV{DOCUMENT_ROOT}."/cgi-bin/lib/";

Только последнее является какбы более правильным, верней use lib специально придумали чтобы не нужно было пользоваться BEGIN-ом
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
sir_nuf_nuf
Дата 9.4.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



myth777, tolkie совершенно прав - подключать модули нужно именно через use  и use lib

А у вас не работало потому что вы писали
Код

use lib qw("blabla");

Здесь лишние кавычки, нужно так:
Код

use lib qw(blabla);


где blabla - абсолютный путь до директории из которой вы будите подключать модули.
конкретно вам нужно было написать

Код

use lib "$ENV{DOCUMENT_ROOT}/cgi-bin";
use mlib;


P.S. А форум - это не автоматическая справочная система, людям здесь интересно отвечать на интересные вопросы =)


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0678 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.