我有一个我想在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)
这不是Runtime.exec()的用途吗?
Runtime.getRuntime().exec("/usr/bin/perl myPerl.pl");
Run Code Online (Sandbox Code Playgroud)
或者我误解了这个问题?
| 归档时间: |
|
| 查看次数: |
28356 次 |
| 最近记录: |