Добавление sys/ioctl.ph в заголовки Perl

Мне нужно использовать sys/ioctl.ph, и он не включен в версию perl (5.12.3), поставляемую с моим дистрибутивом slackware.

Я сделал следующее:

cd /usr/include
h2ph sys/ioctl.ph
cd /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/
mkdir sys
mv ioctl.ph sys

Теперь интерпретатор perl не жалуется на sys/ioctl.ph, но я получаю вот такую ​​ошибку:

Illegal declaration of subroutine Functions::ServerSocket::__INT16_C at /usr/lib64/perl5/site_perl/5.12.3/x86_64-linux-thread-multi/_h2ph_pre.ph line 164.

Вот что в файле вызывает ошибку в строке 164:

unless (defined &__INT16_C(c)) { sub __INT16_C(c)() { &c } }

Я не знаю, с чего начать. Functions::ServerSocket — один из моих модулей, но в моем файле нет такой функции.


person Zagorax    schedule 20.08.2012    source источник


Ответы (1)


Макрос __INT16_C на вашей платформе, вероятно, прост, например,,

#define __INT16_C(c) c

Замените код в строке 164 на

eval 'sub __INT16_C {
    my($c) = @_;
    eval q($c);
}' unless defined (&__INT16_C);

это то, что генерируют другие версии h2ph.

person Greg Bacon    schedule 01.12.2012