Forum Webscript.Ru
Программирование => Perl => Тема начата: DartSidius от 14 Ноября 2006, 00:37:54
-
Собственно я запутался :)...я раньше не писал модулей как таковых...были просто подключаемые файлы, посредством require
Так вот..обьясните в чём такая хорошесть настоящих модулей?...
я тут разбирался....получается пока не заэкспортируешь из модуля функции, то они недоступны...
по идее например:
package Module;
use Exporter();
@ISA = (EXPORTER);
@EXPORT = qw(&function)
теперь функции &function доступна во всё скрипке, т.е. ещё можно просто вызывать &function....так в чём фишка?....
ещё я слышал что можно вроде так вызывать Module->function - это если не экспортировать функции?
-
Слишком много объяснять.
http://wdh.suncloud.ru/perl07.htm и дальше.
в конце perldoc perlmod
-
Почитал...получается основное преимущество перед обычной загрузкой подпрограммы с помощью reqiure:
1. Собственное пространство переменных, функциий и т.д.
2. Модули загружаются во время компиляции а не выполнения скрипта, поэтому бысрее работают
я правильно всё понял?
-
DartSidius:
2. Модули загружаются во время компиляции а не выполнения скрипта, поэтому бысрее работают
Яб так не сказал....
-
А как?
-
Возникли ещё вопросы...
По-умолчанию же из модуля ничего не экспортируется (переменные, подпрограммы и т.д.)....без экспорта можно просто получается вызывать что-то типа того $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 {} в чём его суть?
-
up
-
1. станет глобальной.
2. perldoc perlsub
-
там можно просто сделать $VAR1 = "111";
и она будет глобальной
это тож самое что и our $VAR1?
-
perldoc strict