Это команда PDL :: PP-Inlinep, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
Inline :: Pdlpp - Записывает подпрограммы PDL, встроенные в PDL :: PP
ОПИСАНИЕ
«Inline :: Pdlpp» - это модуль, который позволяет вам писать подпрограммы PDL в стиле PDL :: PP.
Большим преимуществом по сравнению с обычным "PDL :: PP" является то, что вы можете писать эти определения в строке
в любом старом скрипте Perl (без обычных хлопот по созданию файлов Makefile, сборке и т. д.).
Начиная с версии 0.30, модуль Inline поддерживает несколько языков программирования, и каждый
В языке есть собственный модуль поддержки. В этом документе описывается, как использовать Inline с
PDL :: PP (точнее, он будет, когда эти документы будут завершены ";)".
Для получения дополнительной информации о Inline в целом см. Inline.
Некоторые примеры сценариев, демонстрирующих использование "Inline :: Pdlpp", можно найти в
Пример / InlinePdlpp каталог.
"Inline :: Pdlpp" - это в основном бессовестная копия "Inline :: C". Больше всего похвалы достается Брайану И.
Применение
На самом деле вы никогда не используете напрямую "Inline :: Pdlpp". Это просто модуль поддержки для использования
"Inline.pm" с "PDL :: PP". Таким образом, использование всегда:
используйте Inline Pdlpp => ...;
or
привязать Inline Pdlpp => ...;
Примеры
В ожидании доступности полных документов несколько быстрых примеров, иллюстрирующих типичное использование.
A декриминализовано пример
# пример скрипта inlpp.pl
использовать PDL; # должен вызываться перед (!) вызовами 'use Inline Pdlpp'
используйте Inline Pdlpp; # фактический код находится в блоке __Pdlpp__ ниже
$ a = последовательность 10;
напечатать $ a-> inc, "\ n";
напечатайте $ a-> inc-> dummy (1,10) -> tcumul, "\ n";
__ДАННЫЕ__
__Pdlpp__
pp_def ('вкл',
Парс => 'i (); [o] o ()',
Код => '$ o () = $ i () + 1;',
);
pp_def ('tcumul',
Pars => 'in (n); [o] mul ()',
Код => '$ mul () = 1;
loop (n)% {
$ mul () * = $ in ();
%} ',
);
# конец примера скрипта
Если вы вызовете этот скрипт, он должен сгенерировать вывод, подобный этому:
подсказка> perl inlpp.pl
Встроенный запуск PDL :: PP версии 2.2 ...
[1 2 3 4 5 6 7 8 9 10]
[3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800]
Использование «Inline :: Pdlpp» в целом аналогично использованию «Inline :: C». При отсутствии полноценного
документы для "Inline :: Pdlpp", возможно, вы захотите сравнить Inline :: C.
Code который использования и, что лучший способ библиотеки, и т.д
Приведенный ниже сценарий несколько сложнее, поскольку он использует код из внешнего
библиотека (здесь из Numerical Recipes). Вся соответствующая информация, касающаяся включения
файлы, библиотеки и загрузочный код указываются в вызове конфигурации для «Inline». Для большего
опытным хакерам Perl может быть полезно знать, что формат похож на этот
используется с ExtUtils :: MakeMaker. Ключевые слова в значительной степени эквивалентны тем, которые используются с
"Встроенный :: C". Пожалуйста, смотрите ниже более подробную информацию об использовании "INC", "LIBS",
«AUTO_INCLUDE» и «BOOT».
использовать PDL; # это должно вызываться перед (!) вызовами 'use Inline Pdlpp'
используйте Inline Pdlpp => Config =>
INC => "-I $ ENV {HOME} / include",
LIBS => "-L $ ENV {HOME}/ Lib -lnr -lm ",
# код для включения в сгенерированный XS
AUTO_INCLUDE => << 'EOINC',
#включают
#include "nr.h" / * для poidev * /
#include "nrutil.h" / * для err_handler * /
статическая пустота nr_barf (char * err_txt)
{
fprintf (stderr, "Теперь вызов кваканью ... \ n");
croak ("Ошибка выполнения NR:% s", err_txt);
}
ЭОНК
# устанавливаем наш обработчик ошибок при загрузке кода Inline :: Pdlpp
BOOT => 'set_nr_err_handler (nr_barf);';
используйте Inline Pdlpp; # фактический код находится в блоке __Pdlpp__ ниже
$ a = обнуляет(10) + 30 ;;
напечатать $ a->поидев(5), «\ п»;
__ДАННЫЕ__
__Pdlpp__
pp_def ('поидев',
Парс => 'xm (); [o] pd () ',
GenericTypes => [L, F, D],
OtherPars => 'long idum',
Код => '$ pd () = poidev ((float) $ xm (), & $ COMP (idum));',
);
ПДЛПП Конфигурация Возможности
Для получения информации о том, как указать параметры встроенной конфигурации, см. Встроенный. Эта секция
описывает каждый из параметров конфигурации, доступных для Pdlpp. Большинство вариантов
соответствуют одноименным вариантам MakeMaker или XS. См. ExtUtils :: MakeMaker и
проблемы.
АВТО_INCLUDE
Задает дополнительные операторы для автоматического включения. Они будут добавлены в
по умолчанию. Символ новой строки будет добавлен автоматически. По сути то же самое, что и звонок
в "pp_addhdr". Для коротких фрагментов кода "AUTO_INCLUDE", вероятно, синтаксически лучше.
используйте Inline Pdlpp => Config => AUTO_INCLUDE => '#include "yourheader.h"';
БЛАГОСЛОВЛЯЕТ
То же, что и команда "pp_bless". Задает пакет (т. Е. Класс), к которому ваш новый pp_defed
методы будут добавлены. Если не указано иное, по умолчанию используется «PDL».
используйте Inline Pdlpp => Config => BLESS => 'PDL :: Complex';
BOAT
Задает код C, который будет выполняться в разделе XS BOOT. Соответствует параметру XS.
Действует так же, как команда "pp_add_boot". Часто используется для однократного выполнения кода при загрузке
время модуля, например, вызов инициализации библиотеки.
CC
Укажите, какой компилятор использовать.
CCFLAGS
Укажите дополнительные флаги компилятора.
INC
Задает используемый путь включения. Соответствует параметру MakeMaker.
используйте Inline Pdlpp => Config => INC => '-I / inc / path';
LD
Укажите, какой компоновщик использовать.
ЛДДЛФЛАГИ
Укажите, какие флаги компоновщика использовать.
ПРИМЕЧАНИЕ. Эти флаги полностью переопределяют существующие флаги, а не просто добавляются к
их. Так что, если вам тоже нужно их использовать, вы должны повторно указать их здесь.
БИБЛИОТЕКИ
Задает внешние библиотеки, которые следует связать с вашим кодом. Соответствует
Параметр MakeMaker.
используйте Inline Pdlpp => Config => LIBS => '-lyourlib';
or
используйте Inline Pdlpp => Config => LIBS => '-L / your / path -lyourlib';
ДЕЛАТЬ
Укажите имя используемой утилиты make.
МАЙЭКСТЛИБ
Задает скомпилированный пользователем объект, который должен быть связан. Соответствует MakeMaker
Параметр.
используйте Inline Pdlpp => Config => MYEXTLIB => '/your/path/yourmodule.so';
ОПТИМИЗАЦИЯ
Это управляет настройкой MakeMaker OPTIMIZE. Установив это значение на '-g', вы можете включить
о поддержке отладки для ваших встроенных расширений. Это позволит вам установить
точки останова в вашем коде C с помощью отладчика, такого как gdb.
ТИПЫ
Задает дополнительные файлы карты типов для использования. Соответствует параметру MakeMaker.
используйте Inline Pdlpp => Config => TYPEMAPS => '/ your / path / typemap';
ШУМНЫЙ
Покажите результат любых компиляций, происходящих за кулисами. Использует тройник, который должен быть
доступны на вашем компьютере. По умолчанию выключено.
Используйте PDL :: PP-Inlinep в Интернете с помощью сервисов onworks.net