URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4389
[ Назад ]

Исходное сообщение
"экспорт переменных в модули perl"

Отправлено mthawk , 22-Июн-05 11:39 
Доброго времени суток.
Возникла проблема.
При подключении модуля к основной программе не возникает проблем при использовании обьявляемых им (модулем) переменных и подпрограмм.
Но передать в модуль некоторые переменные основной программы не получается.
Точнее даже не передать а обеспечить доснуп к некоторым переменным.
Как это можно выполнить.
Заранее спасибо.

Содержание

Сообщения в этом обсуждении
"экспорт переменных в модули perl"
Отправлено chip , 22-Июн-05 23:21 
>Доброго времени суток.
>Возникла проблема.
>При подключении модуля к основной программе не возникает проблем при использовании обьявляемых
>им (модулем) переменных и подпрограмм.

Своеобразная форма изложения.

>Но передать в модуль некоторые переменные основной программы не получается.
>Точнее даже не передать а обеспечить доснуп к некоторым переменным.
>Как это можно выполнить.

передавай в качестве параметров методам.


"экспорт переменных в модули perl"
Отправлено mthawk , 23-Июн-05 12:42 
>>Доброго времени суток.
>>Возникла проблема.
>>При подключении модуля к основной программе не возникает проблем при использовании обьявляемых
>>им (модулем) переменных и подпрограмм.
>
>Своеобразная форма изложения.
>
>>Но передать в модуль некоторые переменные основной программы не получается.
>>Точнее даже не передать а обеспечить доснуп к некоторым переменным.
>>Как это можно выполнить.
>
>передавай в качестве параметров методам.
К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.

Уже нашел решение.
package NNNNN;
*var_from_main=*main::var_from_main
..........
..........
sub dddd {
$var_from_main #имеем доступ
}
1;


"экспорт переменных в модули perl"
Отправлено chip , 23-Июн-05 16:11 
>К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.

передавать в качестве указателя на хеш коструктору new(). При то что они "общие".

>Уже нашел решение.

это не решение, это костыль.

>package NNNNN;
>*var_from_main=*main::var_from_main
>..........
>..........
>sub dddd {
>$var_from_main #имеем доступ
>}
>1;

пример, неверной декомпозиции на модули.

ps: ничего личного, но если требуется подобный изврат, то явно проблемы в архитектуре приложения. Не сочтите за оскорбление.


"экспорт переменных в модули perl"
Отправлено mthawk , 29-Июн-05 10:29 
>>К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.
>
>передавать в качестве указателя на хеш коструктору new(). При то что они
>"общие".
>
>>Уже нашел решение.
>
>это не решение, это костыль.
>
>>package NNNNN;
>>*var_from_main=*main::var_from_main
>>..........
>>..........
>>sub dddd {
>>$var_from_main #имеем доступ
>>}
>>1;
>
>пример, неверной декомпозиции на модули.
>
>ps: ничего личного, но если требуется подобный изврат, то явно проблемы в
>архитектуре приложения. Не сочтите за оскорбление.

Не буду отрицать, приложение писалось мною относительно давно, когда работу с модулями я еще не постиг в необходимой мере.
Посему писал как мог. А теперь приходится перестраивать дом, не снося фундамент.
Если можно - буду очень признателен за ссылки на источники по правильному написанию модулей и вообще основам "ООП" на перл


"экспорт переменных в модули perl"
Отправлено chip , 29-Июн-05 11:38 
>Если можно - буду очень признателен за ссылки на источники по правильному
>написанию модулей и вообще основам "ООП" на перл

Начать стоит с находящихся под рукой:
           perlmod             Perl modules: how they work
           perlmodlib          Perl modules: how to write and use
           perlmodstyle        Perl modules: how to write modules with style

           perlboot            Perl OO tutorial for beginners
           perltoot            Perl OO tutorial, part 1
           perltooc            Perl OO tutorial, part 2

и perlstyle


"экспорт переменных в модули perl"
Отправлено PoizOn , 29-Июн-05 16:46 
>>Если можно - буду очень признателен за ссылки на источники по правильному
>>написанию модулей и вообще основам "ООП" на перл
>
>Начать стоит с находящихся под рукой:
>           perlmod
>          
> Perl modules: how they work
>           perlmodlib
>         Perl modules:
>how to write and use
>           perlmodstyle
>       Perl modules: how to
>write modules with style
>
>           perlboot
>          
>Perl OO tutorial for beginners
>           perltoot
>          
>Perl OO tutorial, part 1
>           perltooc
>          
>Perl OO tutorial, part 2
>
>и perlstyle


Писал совсем недавно программу, разбитую на модули и подключаемые через use, так как в модулях хранились глобальные хэши и пара функций, заворачивать все это в ОО модель было просто лень (и с экспортом тоже не хотелось возится). Я работал так:

myscrip.pl
------------------
#!/usr/bin/perl

use DATA;# мой модуль

DATA::Prepare(args);# вызов функции из модуля.

print %DATA::RUTS;# вывод глобальной переменной определенной в модуле.

и т.п
-----------------
Модуль DATA.pm был примерно такой:
---------
package DATA;

%DATA::RUTS=();

sub Prepare {

}

# ....

1;
__END__
Так что в вашем случае (перестройки дома) возможно лучше обойтись без ОО.