Forum Webscript.Ru

Программирование => Perl => Тема начата: DartSidius от 14 Ноября 2006, 00:37:54

Название: Написание модулей
Отправлено: DartSidius от 14 Ноября 2006, 00:37:54
Собственно я запутался :)...я раньше не писал модулей как таковых...были просто подключаемые файлы, посредством require

Так вот..обьясните в чём такая хорошесть настоящих модулей?...

я тут разбирался....получается пока не заэкспортируешь из модуля функции, то они недоступны...


по идее например:

package Module;

use Exporter();

@ISA = (EXPORTER);

@EXPORT = qw(&function)


теперь функции &function доступна во всё скрипке, т.е. ещё можно просто вызывать &function....так в чём фишка?....

ещё я слышал что можно вроде так вызывать Module->function - это если не экспортировать функции?
Название: Написание модулей
Отправлено: NeoNox от 14 Ноября 2006, 11:13:11
Слишком много объяснять.
http://wdh.suncloud.ru/perl07.htm и дальше.
в конце perldoc perlmod
Название: Написание модулей
Отправлено: DartSidius от 14 Ноября 2006, 15:29:39
Почитал...получается основное преимущество перед обычной загрузкой подпрограммы с помощью reqiure:

 1. Собственное пространство переменных, функциий и т.д.
 2. Модули загружаются во время компиляции а не выполнения скрипта, поэтому бысрее работают

я правильно всё понял?
Название: Написание модулей
Отправлено: djkostya от 16 Ноября 2006, 16:30:17
Цитировать
DartSidius:
2. Модули загружаются во время компиляции а не выполнения скрипта, поэтому бысрее работают


Яб так не сказал....
Название: Написание модулей
Отправлено: DartSidius от 16 Ноября 2006, 16:58:36
А как?
Название: Написание модулей
Отправлено: DartSidius от 03 Декабря 2006, 12:57:24
Возникли ещё вопросы...

По-умолчанию же из модуля ничего не экспортируется (переменные, подпрограммы и т.д.)....без экспорта можно просто получается вызывать что-то типа того $Module::var; &Module::program;

@EXPORT - экспорт всего что впишем
@EXPORT_OK  - экспорт по запросу...

это если например мы в модуле..

@EXPORT_OK = qw($aaa)

и вызовем

use Module qw($aaa); - тогда переменная эта заэкспортируется

неясно вот что....что делает our?

допустим по перлдоку написано что
# exported package globals go here
    our $Var1;

т.е. по-идее если написать out $Var1 то она станет глобальной и заэкспортируется??


И ещё интересен вопрос использования BEGIN {} в чём его суть?
Название: Написание модулей
Отправлено: DartSidius от 05 Декабря 2006, 02:48:12
up
Название: Написание модулей
Отправлено: arto от 05 Декабря 2006, 09:15:35
1. станет глобальной.
2. perldoc perlsub
Название: Написание модулей
Отправлено: DartSidius от 05 Декабря 2006, 13:10:27
там можно просто сделать $VAR1 = "111";

и она будет глобальной

это тож самое что и our $VAR1?
Название: Написание модулей
Отправлено: arto от 05 Декабря 2006, 13:23:56
perldoc strict