Автор Тема: Написание модулей  (Прочитано 5794 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« : 14 Ноября 2006, 00:37:54 »
Собственно я запутался :)...я раньше не писал модулей как таковых...были просто подключаемые файлы, посредством require

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

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


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

package Module;

use Exporter();

@ISA = (EXPORTER);

@EXPORT = qw(&function)


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

ещё я слышал что можно вроде так вызывать Module->function - это если не экспортировать функции?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Написание модулей
« Ответ #1 : 14 Ноября 2006, 11:13:11 »
Слишком много объяснять.
http://wdh.suncloud.ru/perl07.htm и дальше.
в конце perldoc perlmod
The documentations is your friend

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« Ответ #2 : 14 Ноября 2006, 15:29:39 »
Почитал...получается основное преимущество перед обычной загрузкой подпрограммы с помощью reqiure:

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

я правильно всё понял?

Оффлайн djkostya

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jobs.su/
Написание модулей
« Ответ #3 : 16 Ноября 2006, 16:30:17 »
Цитировать
DartSidius:
2. Модули загружаются во время компиляции а не выполнения скрипта, поэтому бысрее работают


Яб так не сказал....

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« Ответ #4 : 16 Ноября 2006, 16:58:36 »
А как?

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« Ответ #5 : 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 {} в чём его суть?
« Последнее редактирование: 03 Декабря 2006, 13:17:23 от DartSidius »

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« Ответ #6 : 05 Декабря 2006, 02:48:12 »
up

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Написание модулей
« Ответ #7 : 05 Декабря 2006, 09:15:35 »
1. станет глобальной.
2. perldoc perlsub

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Написание модулей
« Ответ #8 : 05 Декабря 2006, 13:10:27 »
там можно просто сделать $VAR1 = "111";

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

это тож самое что и our $VAR1?

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Написание модулей
« Ответ #9 : 05 Декабря 2006, 13:23:56 »
perldoc strict

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28