在Java中包含Perl

有没有办法执行perl代码而不必使用Runtime.getRuntime.exec(“…”); (在java应用程序中解析)?

我最近一直在研究这个问题。 到目前为止,我发现最有希望的是CPAN上的Inline :: Java模块。 它允许从Perl调用Java,但也(通过一些包含的Java类)从Java调用Perl。

这看起来像你要求的

Inline :: Java在类中提供了一个嵌入式Perl解释器 。 您可以使用它从Java代码中调用Perl代码。

Graciliano M. Passos的PLJava还提供嵌入式翻译。

不要使用JPL(Java Perl Lingo) – 这个项目已经死了,已经从现代的perls中删除了。

Inline::Perl是公认的方式。 但也有可能从JAR运行的Jerl 。

这是一个不使用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
编辑:我说“也许”

不,我不相信这存在。 虽然有几种语言移植到JVM(JRuby,Jython等),但Perl还不是其中之一。

将来,使用任何脚本语言的标准方法是通过JSR 223中引入的java Scripting Support。请参阅脚本项目主页以获取当前支持的脚本语言列表。 不幸的是,Perl还没有在那里:-(