Есть ли способ выполнить Perl-код без использования Runtime.getRuntime.exec ("..."); (разбор в java-приложении)?Включить Perl в Java
ответ
Я смотрел на это сам в последнее время. Наиболее многообещающая вещь, которую я нашел до сих пор, - это модуль Inline::Java на CPAN. Он позволяет вызывать Java из Perl, но также (через некоторые включенные классы Java), вызывая Perl из Java.
Нет, я не верю, что это существует. Хотя было несколько языков, перенесенных в JVM (JRuby, Jython и т. Д.), Perl еще не является одним из них.
this выглядит то, что вы просите
Я мог бы поклясться, что это было легко, как пирог, используя Java Scripting API.
Но, видимо, это не в списке существующих реализаций ...
Так, может быть, это помогает вместо:
java and perl
редактировать: я сказал "возможно"
JPL мертв. Не используйте его. Inline :: Java - путь. – daotoad
Inline::Java обеспечивает embedded Perl interpreter в классе. Вы можете использовать это для вызова кода Perl из кода Java.
Graciliano M. Passos' PLJava также предоставляет встроенный интерпретатор.
Не используйте JPL (Java Perl Lingo) - проект мертв и удален из современных перлов.
В будущем стандартным способом использования любого языка сценариев является поддержка java Scripting Support, представленная в JSR 223. См. scripting project homepage для списка языков сценариев, поддерживаемых на данный момент. К сожалению, Perl не там еще :-(
Inline::Perl
является общепринятым способом. Но есть также Jerl, которые могут быть запущены из баночки.
Вот an example без использования оболочки VM (что не так . весело)
Вот некоторые примеры использования jerlWrapper
класс, чтобы сделать его проще код:
import jerlWrapper.perlVM;
public final class HelloWorld {
/* keeping it simple */
private static String helloWorldPerl = "print 'Hello World '.$].\"\n\";";
public static void main(String[] args) {
perlVM helloJavaPerl = new perlVM(helloWorldPerl);
helloJavaPerl.run();
}
}
или
import jerlWrapper.perlVM;
public final class TimeTest {
/* The (ugly) way to retrieve time within perl, with all the
* extra addition to make it worth reading afterwards.
*/
private static String testProggie = new String(
"my ($sec, $min, $hr, $day, $mon, $year) = localtime;"+
"printf(\"%02d/%02d/%04d %02d:%02d:%02d\n\", "+
" $mon, $day + 1, 1900 + $year, $hr, $min, $sec);"
);
public static void main(String[] args) {
perlVM helloJavaPerl = new perlVM(testProggie);
boolean isSuccessful = helloJavaPerl.run();
if (isSuccessful) {
System.out.print(helloJavaPerl.getOutput());
}
}
}
Вы уверены, что: ** можете ли вы сделать обратное: вызов perl из Java **, является ли он надежным в критически важных вещах? – FutuToad