В настоящее время у меня есть программа, написанная на C, и я заинтересован в интеграции в нее довольно длинного сценария perl, написанного кем-то другим, который выполняет аналогичную функцию, но делает это по-другому.Я не заинтересован в переводе всего сценария perl на язык C вручную.
На мой взгляд, есть несколько вариантов:
- Поскольку сценарий взаимодействует с использованием stdin и stdЯ знаю, что мог бы использовать системный вызов, например,
system("perl script.pl")
и направить ввод и вывод, но я чувствую, что это решение не переносимо и не очень элегантно. - Я мог бы встроитьPerl интерпретатор в мою программу для обработки сценария, однако я чувствую, что это, вероятно, будет громоздким и будет излишним для выполнения сценария, который не изменяется.Это дает преимущество, заключающееся в том, что вместо конвейерного ввода и вывода я мог бы вызывать подпрограммы perl напрямую.
- Я мог бы использовать какой-нибудь инструмент перевода perl-to-c (например, perlcc) для компиляции источника perlc источником во время компиляции, а затем просто включите его в остальную часть моей программы.Хотя на первый взгляд я подумал, что это будет наилучшим вариантом, в сообществе Perl (или, по крайней мере, в той части, которую мне показала Google), существует широкий консенсус в отношении того, что перевод такого рода не очень хорошая идея (этоможет быть только из соображений скорости, которые для меня не проблема).Это также (возможно?) Позволяет мне вызывать подпрограммы perl из кода C, что было бы огромным плюсом.
- Переписать скрипт вручную.
Так что мой вопрос таков: какой из этих вариантов (или ни один из вышеперечисленных) является наиболее элегантным и портативным?Я понимаю, что вызов этой perl-программы из C-программы - это уже грязный взлом, но наименее грязное решение, вероятно, будет лучшим.
Спасибо!