如何从Perl调用Java程序?

时间:2012-05-17 07:07:24

标签: java perl

我是Perl的新手,我正在尝试做一些事情而无法找到答案。

我创建了一个Java项目,其中包含一个获取多个输入参数的主类。

我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,并运行它。

例如:

如果我的主叫mymain,我称之为:mymain 3 4 hi34hi是输入参数),我想创建一个名为myperl的Perl程序,当它调用myperl 3 4 hi时会将参数传递给Java程序并运行它。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

运行Java程序就像运行任何其他外部程序一样。

您的问题分为两部分:

  1. 如何从Perl获取参数到Java程序?
  2. 如何在Perl中运行程序?
  3. 对于(1)你可以做类似的事情

    my $javaArgs = " -cp /path/to/classpath -Xmx256";
    my $className = myJavaMainClass;
    my $javaCmd = "java ". $javaArgs ." " . $className . " " . join(' ', @ARGV);
    

    注意join()函数 - 它会将所有参数放到Perl程序中并用空格分隔。

    对于(2)你可以关注@AurA的回答。

    • 使用system()功能

      my $ret = system("$javaCmd");
      

    这不会捕获(即放入变量$ret)命令的输出,只是返回代码,如0成功。

    • 使用反引号

      my $out = `$javaCmd`;
      

    这将使用Java程序的整个输出填充$ out(您可能不需要这个)。

    • 使用管道

      open(FILE, "-|", "$javaCmd");
      my @out = <FILE>
      

    这更复杂,但允许在输出上进行更多操作。

    有关详细信息,请参阅perldoc -f open

答案 1 :(得分:1)

$javaoutput = `java javaprogram`;
or
system "java javaprogram";

对于jar文件

$javaoutput = `java -jar filename.jar`;
or
system "java -jar filename.jar";