我应该如何在Java中调用Perl脚本?

我读过Runtime.getRuntime().exec("perl script.pl")是一个选项,但这是最好的方法吗?

我需要该脚本的答案,所以在某些情况下我必须阅读脚本的返回,尽管我可能会在其他案例中从文本文件中读取它。

无论如何, exec()是从Java调用Perl脚本的好方法吗? 我应该注意,我正在研究Java Web应用程序,因此安全性是一个问题。

您可以使用Runtime .getRuntime() .exec()或使用Process API 。 Process API允许您获取脚本的输出,因此您可以同时进行通信。

exitValue()getInputStream()似乎是你需要的。

这概述了如何相当优雅地完成它,虽然它可能比它的价值更多努力: http : //search.cpan.org/~nwclark/perl-5.8.9/jpl/docs/Tutorial.pod

概述:
JPL很好地支持,但这是一个复杂的过程:

JPL预处理器解析.jpl文件并为Perl方法生成C代码包装器。 它还生成Java和Perl源文件。

C编译器编译包装器并将其链接到libPerlInterpreter.so共享库,从而为包装器生成共享库。

Java编译器编译Java源文件,该文件使用本机方法加载包装器。

包装器将Java代码连接到Perl源文件中的Perl代码。

幸运的是,通用的Makefile.PL简化了这个过程。 这是一个为您生成Makefile的Perl脚本。

exec()可能是最好的选择,你可以用exitValue()来捕获它的返回值。 您可能也对Inline :: Java感兴趣。

-约翰

请记住,无论Perl脚本创建什么文件,它都是在Java工作文件夹中创建的。 只需将该文件称为’./myPerlCreatedFile.ext’