0

我是 Perl 的新手,我正在尝试做某事但找不到答案。

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

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

例如:

如果我的 main 被调用,并且mymain我这样调用它:(mymain 3 4 hi3是输入参数),我想创建一个 Perl 程序,当它被调用时,它将把参数传递给 Java 程序并运行它。4himyperlmyperl 3 4 hi

我怎样才能做到这一点?

4

2 回答 2

5

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

你的问题有两个部分:

  1. 如何从 Perl 获取参数到 Java 程序?
  2. 如何在 Perl 中运行程序?

对于(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

于 2012-05-17T07:27:48.877 回答
1
$javaoutput = `java javaprogram`;
or
system "java javaprogram";

对于 jar 文件

$javaoutput = `java -jar filename.jar`;
or
system "java -jar filename.jar";
于 2012-05-17T07:11:23.013 回答