Немного предыстории:
Я пытаюсь взаимодействовать с данными, которые я сохранил в файлах Perl, с помощью программы, написанной на C, с использованием Win32 API. Программа на C находится в Windows, а файлы Perl доступны через подключенный сетевой диск в среде Unix. Я использую perlembed и успешно извлекаю нужные мне данные из файлов Perl, используя встроенный интерпретатор Perl и подпрограммы Perl, вызываемые из C.
Эта проблема:
Я должен запустить Perl-скрипты, которые уже есть на стороне Unix. Функция этих сценариев состоит в том, чтобы проверять синтаксис файлов Perl и вносить их в систему контроля версий, которую я использую. Скрипты вызывают некоторые специфичные для Unix команды, такие как pwd
которые вызывают сбой программы на C, когда я использую system(perl perl_file)
. Существует довольно много устаревшего кода на Perl, поэтому я не думаю, что смогу изменить какой-либо из сценариев проверки Perl, которые нужно вызвать.
Мой вопрос:
Как я могу выполнить сценарий Perl в среде Unix из программы C на стороне Windows? Я столкнулся с этим вопросом, предлагая использовать Cygwin, но это, кажется, просто еще одна среда между Unix и Windows. Я подумал, что может быть какой-то способ позволить программе C использовать оболочку C на подключенном сетевом диске для запуска сценария Perl, но я нигде не нашел примеров этого. Или, может быть, я мог бы заставить интерпретатор Perl в среде Unix запустить программу (используя строку shebang)? Я надеюсь, что это не глупый вопрос. Я просто сделал так много работы, чтобы иметь возможность манипулировать данными Unix Perl со стороны Windows, и это огорчает, что я не могу выполнить свою задачу, потому что не могу запустить скрипт Perl.
Спасибо!