Как я могу назвать Perl Script в Java?
Я читаю Runtime.getRuntime().exec("perl script.pl")
вариант, но это лучший способ сделать это?
Мне нужен ответ из этого script, поэтому в некоторых случаях мне придется прочитать return script, хотя я мог бы прочитать его из текстового файла в других случаях.
Во всяком случае, есть exec()
хороший способ вызова Perl script из Java? Я должен отметить, что я работаю над веб-приложением Java, поэтому проблема безопасности здесь.
Ответы
Ответ 1
Вы можете использовать Runtime
.getRuntime()
.exec()
или используйте Process API.
API-интерфейс процесса позволяет получить вывод script, поэтому вы можете обмениваться данными.
exitValue()
и getInputStream()
кажется быть тем, что вам нужно.
Ответ 2
Это описывает, как сделать это довольно элегантно, хотя это может быть больше усилий, чем стоит:
http://search.cpan.org/~nwclark/perl-5.8.9/jpl/docs/Tutorial.pod
Обзор:
Хорошо поддерживается JPL, но это сложный процесс:
Препроцессор JPL анализирует файл .jpl и генерирует C-оболочки для методов Perl. Он также генерирует исходные файлы Java и Perl.
Компилятор C компилирует оболочку и связывает ее с общей библиотекой libPerlInterpreter.so, создавая общую библиотеку для обертки.
Компилятор Java компилирует исходный файл Java, который использует собственные методы для загрузки оболочки.
Оболочка соединяет код Java с кодом Perl в исходном файле Perl.
К счастью, общий Makefile.PL упрощает этот процесс. Это Perl script, который создает Makefile для вас.
Ответ 3
exec(), скорее всего, лучший вариант, и вы можете поймать его возвращаемое значение с помощью exitValue(). Вы также можете быть заинтересованы в Inline:: Java.
-Джон
Ответ 4
помните, какой файл Perl script создается, он создается в рабочей папке Java. просто обратитесь к этому файлу как './myPerlCreatedFile.ext'