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

时间:2009-03-02 19:03:41

标签: java perl

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

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

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

4 个答案:

答案 0 :(得分:10)

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

exitValue()getInputStream()似乎就是您所需要的。

答案 1 :(得分:4)

这概述了如何相当优雅地完成它,虽然它可能比它的价值更多努力: 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脚本。

答案 2 :(得分:3)

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

-John

答案 3 :(得分:1)

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

即可