imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 12.02.2003, 17:55     # 1
usach
Junior Member
 
Регистрация: 05.07.2002
Сообщения: 58

usach Путь к славе только начался
Question Подключение модулей в Perl

Вот в умной книжке прчитал если я вот так сделаю:
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);

use Exporter;
@ISA = qw(Exporter);

@EXPORT = qw(&myfunc);

sub myfunc
{........
}

а в скрипте
use этот модуль
то ф-ия myfunc будет доступна, но если в @EXPORT myfunc невключать то ее не получится использовать.

На практике получаеться поровну напишу я @EXPORT = qw(&myfunc); или нет myfunk в любом случае запускаеться

Неподскажите что я не так делаю или не так понял ???


usach вне форума  
Старый 21.02.2003, 20:19     # 2
asfyvv
Guest
 
Сообщения: n/a

хотелось бы уточнить как именно вызывается функция - в полной записи (имя_модуля::функция() ) или как функция, якобы описанная в главной программе ( функция() ) ?
 
Старый 04.03.2003, 14:22     # 3
usach
Junior Member
 
Регистрация: 05.07.2002
Сообщения: 58

usach Путь к славе только начался
вызываеться просто по имени - Функция () без указания модуля
usach вне форума  
Старый 11.03.2003, 19:17     # 4
asfyvv
Guest
 
Сообщения: n/a

Вот работающий пример. Специально написал, чтобы попробовать.
1. Файл библиотеки test.pm

#!perl

package my_modules::Test;

use strict;
require Exporter;

use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw(&func1 &func2);

sub func1 {
print "func1\n";
}

sub func2 {
print "func2\n";
}

1;

2. Файл, из которого вызываются функции proba.pl

#!perl

use strict;
use my_modules::Test;

func1();
func2();

Если запустить как есть, то программка отработает без ошибки. Если убрать из строки файла библиотеки @EXPORT = qw(&func1 &func2); , к примеру &func2, то начнет ругаться на неопределенную функцию main::func2, т.е. именно так, как написано. Возможно, Вы привели не весь код библиотеки и там где-то есть дополнительная обработка.

p.s. Сам я предпочитаю не пользоваться Exporter. При наличии умного редактора совсем не сложно прописывать полные имена функций и при этом можно не бояться, что имя функции в разных библиотеках совпадет.
 
Старый 12.03.2003, 11:31     # 5
usach
Junior Member
 
Регистрация: 05.07.2002
Сообщения: 58

usach Путь к славе только начался
У меня имя пакета в test.pm и в proba.pl одно и то ж, можеть из за этого?
usach вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:43.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.