Выполнение сценария Perl из программы C

В настоящее время у меня есть программа, написанная на C, и я заинтересован в интеграции в него довольно длинного сценария Perl, написанного кем-то другим, который выполняет аналогичную функцию, но делает это другим способом. Я не заинтересован в ручном переводе всего Perl-скрипта на C.

На мой взгляд, есть несколько различных вариантов:

  1. Поскольку скрипт взаимодействует с использованием stdin и stdout, я знаю, что могу использовать систему вызовите, например, system ("perl script.pl") и направьте ввод и вывод по конвейеру, но я чувствую, что это решение не переносимо и не выглядит очень элегантным.
  2. Я мог бы встроить Perl интерпретатор в мою программу, чтобы обработать сценарий, однако я чувствую, что это, вероятно, было бы громоздко и было бы излишним для выполнения сценария, который не изменяется. Это дает то преимущество, что вместо того, чтобы связывать ввод и вывод по конвейеру, я мог бы напрямую вызывать подпрограммы Perl.
  3. Я мог бы использовать какой-нибудь инструмент преобразования perl-to-c (например, perlcc ) для компиляции Исходный код Perl в исходный код C во время компиляции, а затем просто включить его в остальную часть моей программы. Хотя на первый взгляд я подумал, что это будет лучший вариант, в сообществе Perl (или, по крайней мере, в той его части, которую показал мне Google), похоже, существует широкий консенсус в отношении того, что делать такой перевод не очень хорошая идея может быть, просто из соображений скорости, что для меня не проблема). Это также (может?) Позволит мне вызывать подпрограммы Perl из кода C, что было бы огромным плюсом.
  4. Перепишите скрипт вручную.

Итак, мой вопрос: какой из этих вариантов (или ни один из вышеперечисленных) самый элегантный и портативный? Я понимаю, что вызов этой программы Perl из программы на языке C - уже беспорядочный прием для начала, но наименее беспорядочное решение, вероятно, будет лучшим.

Спасибо!

5
задан Guy Avraham 24 July 2019 в 18:27
поделиться