Ответ 1
Я изучал это сам недавно. Наиболее многообещающая вещь, которую я нашел до сих пор, - это модуль Inline::Java в CPAN. Он позволяет вызывать Java из Perl, но также (через некоторые включенные классы Java), вызывая Perl из Java.
Есть ли способ выполнить Perl-код без использования Runtime.getRuntime.exec( "..." ); (разбор в java-приложении)?
Я изучал это сам недавно. Наиболее многообещающая вещь, которую я нашел до сих пор, - это модуль Inline::Java в CPAN. Он позволяет вызывать Java из Perl, но также (через некоторые включенные классы Java), вызывая Perl из Java.
этот выглядит так, как вы просите
Inline:: Java предоставляет встроенный интерпретатор Perl в классе. Вы можете использовать это для вызова кода Perl из кода Java.
PLJava пользователя Graciliano M. Passos также предоставляет встроенный интерпретатор.
Не используйте JPL (Java Perl Lingo) - проект мертв и удален из современных перлов.
Inline::Perl
является принятым способом. Но там также Jerl, который может запускаться из JAR.
Здесь пример без использования обертки 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());
}
}
}
Я мог бы поклясться, что это было легко, как пирог, используя Java Scripting API.
Но, видимо, это не в списке существующих реализаций...
Итак, возможно, это помогает вместо этого:
java и perl
Забастовкa >
edit: я сказал "возможно"
Нет, я не считаю, что это существует. Хотя на JVM было несколько языков (JRuby, Jython и т.д.), Perl еще не является одним из них.
В будущем стандартным способом использования любого языка сценариев является поддержка java Scripting Support, представленная в JSR 223. См. страница проекта сценариев для списка поддерживаемых языков сценариев. К сожалению, Perl еще не существует: - (