如何从Java调用Perl?

Jar*_*red 15 java perl

我有一个我想在Java中使用的Perl模块.有没有办法使用Windows上的ActiveState Perl或Linux附带的通用Perl来调用此代码?我找到了对JPL的引用,但它似乎不再被维护了.

Von*_*onC 17

Inline-Java是从Perl调用java的常用库,这篇文章提出了一个org.perl.java模块,该模块应该允许从Java调用Perl.

但是,由于JNI实现对不同JVM的不可预测性,很难说JVM和Perl的组合将起作用.通常,需要的是具有MULTIPLICITY的Perl和编译的线程.这意味着他使用自定义构建的Perl.

否则,Inline :: Java :: Callback允许您从Java调用Perl函数.为此,您需要创建一个org.perl.inline.java.InlinePerlCaller对象.以下是典型用法的示例:

use Inline Java => <<END ;
import java.util.* ;
import org.perl.inline.java.* ;

class Pod_regexp extends InlineJavaPerlCaller {
    public Pod_regexp() throws InlineJavaException {
    }

    public boolean match(String target, String pattern)
        throws InlineJavaException {
        try {
            String m = (String)CallPerlSub("main::regexp",
            new Object [] {target, pattern}) ;

            if (m.equals("1")){
            return true ;
        }
    }
    catch (InlineJavaPerlException pe){
        // $@ is in pe.GetObject()
    }

    return false ;
    }
}
END

my $re = new Pod_regexp() ;
my $match = $re->match("Inline::Java", "^Inline") ;
print($match . "n") ; # prints 1

sub regexp {
    my $target = shift ;
    my $pattern = shift ;

    return ($target =~ /$pattern/) ;
} 
Run Code Online (Sandbox Code Playgroud)


Oli*_*lie 6

这不是Runtime.exec()的用途吗?

Runtime.getRuntime().exec("/usr/bin/perl myPerl.pl");
Run Code Online (Sandbox Code Playgroud)

或者我误解了这个问题?