[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