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

Исходное сообщение
"Вызов внешней процедура из пакета."

Отправлено dimau , 12-Ноя-07 18:50 
###############
Mypackage.pm
###############
Есть пакет
package Mypackage;

sub new{
        my $self={};
        bless($self);
        return $self;
}
sub mytest{
#пытаюсь вызвать внешнюю функцию:
test();
}

....
##################
test.pl
##################
use Mypackage;

sub test
{
print "Yahoo!!!";
}

$a = Mypackage->new();
$a->mytest();
и тут:
Undefined subroutine &Mypackage::mytest::testcalled at ....


Как мне вызвать внешнюю функцию test из объекта Mypackage????


Содержание

Сообщения в этом обсуждении
"Вызов внешней процедура из пакета."
Отправлено AMDmi3 , 12-Ноя-07 20:08 
>Как мне вызвать внешнюю функцию test из объекта Mypackage????

Mypackage.pm не знает ничего про test(). Либо определяй ее в Mypackage.pm, либо во внешнем модуле, который используй в Mypackage.pm, либо передавай функцию по ссылке (perldoc perlsub).


"Вызов внешней процедура из пакета."
Отправлено dimau , 13-Ноя-07 00:51 
>>Как мне вызвать внешнюю функцию test из объекта Mypackage????
>
>Mypackage.pm не знает ничего про test(). Либо определяй ее в Mypackage.pm, либо
>во внешнем модуле, который используй в Mypackage.pm, либо передавай функцию по
>ссылке (perldoc perlsub).

Спасибо
Так и думал, лучше всего внешний модуль наверное юзать в этом случае.


"Вызов внешней процедура из пакета."
Отправлено NuINu , 13-Ноя-07 09:27 
>>>Как мне вызвать внешнюю функцию test из объекта Mypackage????
>>
>>Mypackage.pm не знает ничего про test(). Либо определяй ее в Mypackage.pm, либо
>>во внешнем модуле, который используй в Mypackage.pm, либо передавай функцию по
>>ссылке (perldoc perlsub).
>
>Спасибо
>Так и думал, лучше всего внешний модуль наверное юзать в этом случае.
>

Передай ссылку на функцию в конструктор объекта, или в вызываемый метод.


"Вызов внешней процедура из пакета."
Отправлено angra , 13-Ноя-07 15:26 
>#пытаюсь вызвать внешнюю функцию:
>test();

заменить на
&main::test();
и будет работать. Правда для callback лучше все-таки применять передачу ссылки на функцию