在Java中包含Perl

在Java中包含Perl,java,perl,include,Java,Perl,Include,是否有任何方法可以在不使用Runtime.getRuntime.exec(“…”)的情况下执行perl代码;(在java应用程序中解析)?不,我认为这不存在。虽然已经有几种语言被移植到JVM(JRuby、Jython等),但Perl还不是其中之一。看起来就像你想要的一样我最近一直在研究这个问题。到目前为止,我发现最有希望的事情是CPAN上的模块。它允许从Perl调用Java,但也允许(通过一些包含的Java类)从Java调用Perl。我可以发誓,使用 但显然它不在现有实现的列表中 因此,也许这会

是否有任何方法可以在不使用Runtime.getRuntime.exec(“…”)的情况下执行perl代码;(在java应用程序中解析)?

不,我认为这不存在。虽然已经有几种语言被移植到JVM(JRuby、Jython等),但Perl还不是其中之一。

看起来就像你想要的一样

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

我可以发誓,使用 但显然它不在现有实现的列表中

因此,也许这会有所帮助:
编辑:我说“也许”

在课堂上提供了一个。您可以使用它从Java代码中调用Perl代码

还提供了一个嵌入式解释器


不要使用JPL(Java Perl行话)——该项目已经过时,并且已经从现代Perl中删除。

将来,使用任何脚本语言的标准方法都是通过JSR 223中引入的Java脚本支持。有关当前支持的脚本语言的列表,请参阅。不幸的是,Perl还没有出现:-(

内联::Perl
是公认的方式。但也有一些可以从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();
    }
}


JPL已经死了。不要使用它。内联::Java是最好的选择。你确定吗:你能做相反的事情吗:从Java调用perl,它在任务关键型的东西中可靠吗?Jerl for Perl5正在被弃用。Rakudo perl有VM选项:Jerl for Perl5确实被弃用了。虽然该项目稳定了2年以上,但仍有赌注虚拟化选项。
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());
        }
    }
}