有什么办法可以执行perl代码而不必使用Runtime.getRuntime.exec(“...”); (解析在Java应用程序)?在Perl中包含Perl
回答
我最近一直在寻找这个自己。我迄今发现的最有希望的事情是CPAN上的Inline::Java模块。它允许从Perl调用Java,但也可以(通过一些包含的Java类)从Java调用Perl。
不,我不相信这存在。虽然有几种语言移植到JVM(JRuby,Jython等),但Perl还不是其中之一。
this看起来就像你问
我可以发誓使用Java Scripting API作为馅饼很容易。
但显然它不是现有实现的名单上...
所以,也许这会有所帮助,而不是:
java and perl
编辑:我说, “也许”
JPL已经死了。不要使用它。 Inline :: Java是要走的路。 – daotoad 2009-06-09 19:22:32
Inline::Java提供在一个班级。您可以使用它从Java代码中调用Perl代码。
Graciliano M. Passos' PLJava也提供了一个嵌入式解释器。
不要使用JPL(Java Perl Lingo) - 该项目已经死亡,并且已经从现代Perl中删除。
将来,使用任何脚本语言的标准方法是通过JSR 223中引入的java脚本支持。请参阅scripting project homepage以获取当前支持的脚本语言列表。不幸的是,Perl是不是还存在:-(
Inline::Perl
是接受的方式。但也有Jerl可以从JAR运行。
这里的an example不使用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());
}
}
}
Jerl for Perl5已被弃用。 Rakudo perl提供了VM选项:http://en.wikipedia.org/wiki/Rakudo_Perl_6 – michaelt 2015-01-06 22:46:57
- 1. 创建包含在Perl
- 2. 排除包含在Perl
- 3. 匹配包含在Perl
- 4. 如何在sed中包含perl命令?
- 5. 在Perl中包含Hashes内的哈希
- 6. 在文件名中包含变量perl
- 7. Perl包含动态文件
- 8. Perl - 模式包含新行
- 9. 包含引号的Perl xml
- 10. 索引参数包含。 perl
- 11. 如何包含文件在Perl 6
- 12. XCode 4.x不包含Perl MakeMaker。 brew failed - 请求Perl文件。
- 13. 64位perl是否包含所有32位perl模块?
- 14. 是否有理由在Perl包中包含shebang行?
- 15. 包(“C4" ,$位)在Perl
- 16. 无法找到@INC中的Connection.pm(@INC包含:/usr/local/lib/perl/5.14.2/etc/perl /usr/local/share/perl/5.14.2 ....)at ./select.cgi在线
- 17. Perl PP不包含切换模块
- 18. perl脚本参数包含双定额“
- 19. 从包含多个脚本(壳/ perl的)
- 20. 的Perl:更换包含问号
- 21. Perl字符串包含括号
- 22. 包含换行符的Perl参数
- 23. 包含“^”的Perl XOR转义字符串
- 24. Perl Oauth2包
- 25. Perl包Tie :: CSV_File
- 26. JavaScript Perl包
- 27. 含义LINE的:在Perl
- 28. 在Perl-CGI生成页面中包含JavaScript
- 29. Perl的检查如果一个标量包含在阵列中
- 30. 在数组中只包含字符串的Perl引号
你确定:**你可以做相反的事情:调用Java的perl **,它在任务关键的东西中可靠吗? – FutuToad 2014-01-14 14:53:11