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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с use и require, необходим пример 
V
    Опции темы
igorold
Дата 26.4.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



Есть скрипт, который необходимо поставить в нескольких местах, но в начале скрипта есть индивидуальные настройки.
Я решил их вынести в отдельный файл, чтобы при замене скрипта не править каждый раз эти переменные.
как лучше это сделать?
Код

my $ComplexID = 520;
my $ComplexName = 'центральный журнал событий'; 
.................................
my $AdminID = 24;

перенес эти настройки в файл Config.pm:
Код

packages Config;
#===================Application settings=====================
my $Name = 'центральный журнал событий'; #название базы
my $ID = 520
my $Admin = 24;
1;

в основном скрипте вставил строку:
Код

require "Config.pm";

а как теперь эти переменные из файла Config.pm присвоить переменным основного скрипта?
Код

require "Config.pm";
my $ComplexID = ????;
my $ComplexName = ???; 
.................................
my $AdminID = ???;

а если использовать USE, какие отличия будут? 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 26.4.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



самое простое решение это обычный файл - типа config.pl и загружать его можно в начале через do

Добавлено @ 14:00 
и глянь тут ;)
http://forum.vingrad.ru/index.php?showtopi...p;#038;p=711411

Добавлено @ 14:01 
Как говориться ПОИСК фарева ;) 


--------------------
PM   Вверх
igorold
Дата 26.4.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



ну хорошо, сделал так файл Config:
Код

package Config;

BEGIN
{
    use Exporter;
    @Config::ISA = qw( Exporter );
    @Config::EXPORT = qw( $c );
}
our $c=
{
    ComplexName => 'центральный журнал событий',
    AdminID     => 24,
};
1;

основной скрипт:
Код

use "Config.pm";
my $ComplexName = $c->{ComplexName};
my $AdminID     = $c->{AdminID};

выдается ошибка:
Код

syntax error at /var/www/ComplexDB/ComplexDB.pm line 15, near "use "Config.pm""

кстати, поиском искал, ничего КОНКРЕТНОГО не нашел ... 
ни USE, ни REQUIRE, ни DO не использовал ...  smile  smile  smile  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 26.4.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Цитата(nitr @  26.4.2006,  13:49 Найти цитируемый пост)
самое простое решение это обычный файл - типа config.pl и загружать его можно в начале через do


проверь синтаксис своего скрипта >perl -w имя_скрипта 


--------------------
PM   Вверх
GoodBoy
Дата 26.4.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

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



вместо
Код
use "Config.pm";

пиши
Код
use Config;
 


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
igorold
Дата 27.4.2006, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



тогда выдает ошибку:
Код

Global symbol "$c" requires explicit package name at /var/www/ComplexDB/ComplexDB.pm line 18.
Global symbol "$c" requires explicit package name at /var/www/ComplexDB/ComplexDB.pm line 19.


неужели ни у кого нет работающего примера .... 
киньте кусочек работающего кода .... КТО МОЖЕТ .....

плииииииииз  smile  smile  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 27.4.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



ты понимаешь... smile))
может стоит тебе какие книжки прочесть..?
и про простой способ я тебе сказал... не усложняй себе жизнь... 


--------------------
PM   Вверх
GoodBoy
Дата 27.4.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

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



вот, держи:

Код
package config;

use Exporter;
@ISA = qw(Exporter);
$VERSION = 1.00;
@EXPORT = qw($hostname $database $username $password %code);

use strict;

our $hostname = "localhost";       # IP адрес хоста с базой данных MySQL
our $database = "basename";        # Наименование базы данных
our $username = "root";            # Login пользователя базы данных
our $password = "password";        # Пароль пользователя

our %code = (
    1 => 'READY',
    2 => 'IN MAIL PROCESS',
    3 => 'MAILED NORMALLY',
    4 => 'END TIMEOUT',
    5 => 'FILE NOT FOUND',
    6 => 'CANCELLED'
);

1;



использование:

Код
#!/usr/bin/perl

use strict;
use DBI;
use CGI qw(:standard :html3);
use config;

our ($hostname, $database, $username, $password);

my $dbh = DBI->connect("DBI:mysql:database=$database;host=$hostname", $username, $password) or die "Database connection failed: ".DBI::errstr;
  


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
igorold
Дата 28.4.2006, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



GoodBoy, большое спасибо, заработало ... надо было в основном скрипте прописать:
Код

our ( и перечислить переменные из config.pm )


дам балл, когда право иметь буду или может кто за меня даст ... :о))

а насчет 
может стоит тебе какие книжки прочесть..?
и про простой способ я тебе сказал... не усложняй себе жизнь... 


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

Это сообщение отредактировал(а) igorold - 28.4.2006, 06:23


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 28.4.2006, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



igorold, всё тоже самое, тока модуль зачем создавать? smile Прочесть можно perldoc Config.
И загружать можно просто через do, т.к. тот же our используете ;) Я про это говорил... пример (имхо) был лишний.

Невсегда опытный = внимательный ;) 
Цитата
use "Config.pm";

я этого не заметил =)) 

Это сообщение отредактировал(а) nitr - 28.4.2006, 09:30


--------------------
PM   Вверх
korob2001
Дата 28.4.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата(igorold @  28.4.2006,  03:22 Найти цитируемый пост)
our ( и перечислить переменные из config.pm )

Да нет, перечислять их не обязательно. Вообще используй ещё и массив @EXPORT_OK, да бы не экспортировать то, что не нужно.
Код

package Config;

require Exporter;
push( @ISA, 'Exporter' );
@EXPORT = qw( $DBHOST $DBBASE $DBLOG $DBPASS $IMG_DIR $JS_DIR $CSS_DIR );
@EXPORT_OK = qw( $DBHOST $DBBASE $DBLOG $DBPASS $IMG_DIR $JS_DIR $CSS_DIR );

# Конфигурация базы данных
our $DBHOST = "localhost";
our $DBBASE = "database";
our $DBLOG  = "root";
our $DBPASS = "pass";

# Конфигурация основных каталогов
our $IMG_DIR = "/home/localhost/images";
our $JS_DIR   = "/home/localhost/js";
our $CSS_DIR = "/home/localhost/css";

1;

Если тебе нужно экспортировать все переменные, то пишешь просто:
Код

#!/usr/bin/perl
use lib ( путь/к/библиотеке );
use Config;
# Здесь тебе доступны все переменные из файла Config.pm

Но может возникнуть такая ситуация, когда тебе понадобятся просто пути к каталогам, а переменные конфигурации базы данных не понадобятся вообще. Тогда пишешь так:
Код

#!/usr/bin/perl
use lib ( путь/к/библиотеке );
use Config qw($IMG_DIR $JS_DIR $CSS_DIR );
# Здесь тебе доступны только те переменные из файла Config.pm, которые ты указал явно.

Если хочешь дать возможноть экспортировать большими группами, то почитай о хэше %EXPORT_TAGS. 


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


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

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


 




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


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

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