Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Подключение pm-модулей


Автор: webser 10.3.2008, 12:19
Я недавно начал программировать - учусь "на ходу".
Суть вопроса проста - подключение pm-модулей. У меня есть набор perl-программ, которые я отлаживаю на локальном сервере. А потом мне надо перекинуть их на внешний. Что-бы не менять пути в модулях - я создал файл wwwvars.pm, где определил пути ::::
#!/usr/bin/perl
package wwwvars;
##################################################
#########################
# User defined variables
##################################################
#########################

# Server root directory
$config{'srv_root'} = "V:/имя сервера/www";
# $config{'srv_root'} = "/home/clients/имя сервера/public_html";

1;

и в перловых программах подключаю его :::

#!/usr/bin/perl

use wwwvars qw(%config);

print "Content-type: text/html\n\n";

$path = $config{'srv_root'};
print "путь ::::: ",$path;

НО НИЧЕГО НЕ ПОДКЛЮЧАЕТСЯ и ОШИБКУ НЕ ВЫДАЕТ. Может чего в настройках Apache (файле http.conf) изменить? Буду Вам очень признателен за указание на ошибку - чувствую, что какая-то мелочь

Заранее спасибо

Автор: sir_nuf_nuf 10.3.2008, 13:40
а) во-первых. Прочитайте про модули и механизм экспорта - 30 минут - решает 70 % проблем
http://perldoc.perl.org/perlmod.html

б) решение вашей проблемы ( нет, вы все таки прочитайте про модули, прежде чем копипастить =))
Код

package wwwvars;

use base qw(Exporter);   #это необходимо что-бы модуль мог экспортировать символы

our @EXPORT_OK = qw(%config); #а здесь мы говорим, что по требованию мы будем экспортировать %config

$config{'srv_root'} = "/home/clients/имя сервера/public_html";

1;


вот. если вам не охото все вермя писать 
use wwwvars qw(%config);

то можно в написать за место
@EXPORT_OK =...
@EXPORT=...

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

может быть можно решить проблему используя другие средства, например use Cwd ?

Автор: webser 10.3.2008, 17:44
Я разбирался с готовыми кодами и чт-то упустил. Там было ::::

 ##################################################
#########################
# User defined variables
##################################################
#########################

package wwwvars;

require Exporter;
@ISA = qw (Exporter);
@EXPORT = qw(@EXPORT_OK);

@EXPORT_OK = qw(%config);
use vars qw(%config);
use strict;

# Server root directory
$config{'srv_root'} = "V:/имя сервера/www";
# $config{'srv_root'} = "/home/clients/имя сервера/public_html";

1; 

А я этот блок по неразумению "похерил"..... smile 

Сейчас поставил так, как выше - все заработало....
Спасибо за совет.... smile 


Автор: KSURi 10.3.2008, 19:25
Цитата(webser @  10.3.2008,  17:44 Найти цитируемый пост)
@EXPORT = qw(@EXPORT_OK);

@EXPORT_OK = qw(%config);

А не проще %config сразу в @EXPORT? А то какое-то извращение получается...

Автор: webser 10.3.2008, 19:30
Т.е вот так ? :::::


Я разбирался с готовыми кодами и чт-то упустил. Там было ::::

 ##################################################
#########################
# User defined variables
##################################################
#########################

package wwwvars;

require Exporter;
@ISA = qw (Exporter);
@EXPORT = qw(%config);

use vars qw(%config);
use strict;

# Server root directory
$config{'srv_root'} = "V:/имя сервера/www";
# $config{'srv_root'} = "/home/clients/имя сервера/public_html";

1; 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)