Inline-Java - это обычная библиотека для вызова java из Perl, и в этом посте предлагается org.perl.java модуль, который должен разрешать вызов Perl с Java, как и просили.
Однако из-за непредсказуемости реализаций JNI для разных
JVM трудно сказать, какие комбинации JVM и Perl будут работать. Обычно требуется Perl с MULTIPLICITY и скомпилированные потоки. Это означает, что он использует пользовательский Perl.
В противном случае Inline :: Java :: Callback позволяет вызывать функции Perl из Java. Для этого вам нужно создать объект <strong>org.perl.inline.java.InlinePerlCaller</strong>
. Вот пример типичного использования:
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/) ;
}