слишком много документации и сразу все не объять. с XS только начал
разбираться, поэтому позадаю еще ламерских вопросов :)
создал с помощью h2xs каталог с проектом
h2xs -n MyModule
затем написал в MyModule/MyModule.xs две функции на C, которые я вызваю из
тестов и
make test делает все тесты.
то есть в тесте написано
use_ok 'MyModule';
my $result = MyModule::my_foo();
ok что-то с $result
и так далее.
из теста - работает.
теперь дошел до того что нужно над вызовом этих функций perl-обертку
написать
соответственно полез редактировать файл lib/MyModule.pm.
там вроде все просто
написан автолоад констант (я их не использую) и сумарно следующее:
package MyModule;
use 5.010001;
use strict;
use warnings;
use Carp;
require Exporter;
use AutoLoader;
our @ISA = qw(Exporter);
...
require XSLoader;
XSLoader::load('MyModule', $VERSION);
теперь я тут хочу вставить функцию, которая будет вызывать мою XS-ную
функцию, пишу:
sub my_cool_foo
{
$result = my_foo();
...
}
и вот тут при компиляции модуля ругается, что этой функции нет:
Bareword "my_foo" not allowed while "strict subs" in use at ...
и если даже указать полное имя пакета то все равно ругается. и как
обращаться к XS'ным функциям изнутри модуля?
решил я вынести все XS'ы в сабмодуль
то есть сделать чтобы
MyModule - был чистый перл, а он уже говорил
use MyModule::XS;
и дергал из него функцию, но не пойму по документации что надо изменить в
Makefile.PL чтобы тот мог собирать это. а переименование MyModule.xs в XS.xs
и правка имен названий на добавление суффиксов ::XS приводит к какой-то
ахинее.
где бы посмотреть примерчик проектика где бы было основной модуль на перле и
дополнительный с суффиксом ::что-то на XS?
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org