Автоматическое взаимодействие с кодом Perl

Мне было интересно, есть ли способ автоматически взаимодействовать с кодом Perl 5, не создавая явных API и не публикуя его по какому-либо протоколу. Я не хочу ограничивать этот вопрос какими-либо конкретными способами достижения этого - я ищу любые идеи.

Доступ к Ruby можно получить из языков на основе JVM, например, через JRuby; изначально скомпилированные языки обычно доступны через собственные общие библиотеки / стандартное соглашение о вызовах для этой платформы; у других интерфейс может быть сгенерирован автоматически из кода... Какие есть опции для Perl?


person viraptor    schedule 25.11.2010    source источник
comment
@Virator: я совсем не уверен, что это значит. Ваш первый абзац не соответствует ни одному известному слоту в моем мозгу, а второй почти так же загадочен. Ты про XS что ли?   -  person tchrist    schedule 25.11.2010
comment
@tchrist: я хочу получить доступ к некоторому устаревшему коду Perl (который я действительно не хочу трогать) с какого-то другого языка. Надеюсь, что со временем часть Perl будет прекращена. Я ищу способы сделать это.   -  person viraptor    schedule 25.11.2010
comment
честно говоря, взять устаревший код Perl и превратить его в API, написав вокруг него небольшую оболочку (от простого старого канала данных, передаваемого к некоторому обмену данными через сокеты, до...) звучит для меня НАМНОГО проще, чем пытаться объединить Perl и не-Perl-код. на родном уровне. YMMV :)   -  person DVK    schedule 25.11.2010
comment
@DVK: Это определенно вариант. Мне просто нужно протестировать оба способа и посмотреть, что проще в использовании (и что требует меньше переписывания Perl).   -  person viraptor    schedule 25.11.2010


Ответы (2)


В качестве одного из вариантов вы можете встроить интерпретатор Perl, как показано здесь. или здесь или здесь

person DVK    schedule 25.11.2010
comment
Следуя этой идее, я тоже нашел pyperl search.cpan.org/~gaas/ pyperl-1.0/perlmodule.pod — простое встраивание perl в python. - person viraptor; 25.11.2010

Есть библиотека для встраивания Perl в вашу программу (см. perlembed.pod), которая компилируется автоматически - ее может использовать любой язык, pyperl для Python, расширение PEAR "Perl" для PHP, несколько попыток использования Perl 5 из Perl 6, несколько попыток для запуска Perl из JVM (все не закончено), Perl.NET.

Также вы можете пойти другим путем, встроить программу на другом языке в Perl и просто вызывать подпрограммы Perl из программы на другом языке. Основная программа Perl будет состоять только из вызова вашей программы на другом языке. Существует большое количество модулей CPAN, которые интегрируют другие языки.

person Alexandr Ciornii    schedule 25.11.2010
comment
Я вижу много подобных проектов, но иногда трудно понять, какие из них являются доказательством концепции, а какие являются серьезными опубликованными проектами, потому что они действительно где-то используются и поддерживаются (это то, что я ищу :)) - person viraptor; 25.11.2010
comment
perlembed.pod - самая первая ссылка в моем ответе, к вашему сведению :) (ваш ответ дает довольно подробную информацию, поэтому я рад, что вы ее дали) - person DVK; 25.11.2010