[Moscow.pm] XS как переименовать модуль?

Ivan Petrov i.petro.77.00 на gmail.com
Вс Янв 30 12:10:14 PST 2011


слишком много документации и сразу все не объять. с 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?
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20110130/38754513/attachment.html>


Подробная информация о списке рассылки Moscow-pm