我是 Perl 新手,我正在尝试做一些事情,但找不到答案。
我创建了一个 Java 项目,其中包含一个获取多个输入参数的主类。
我想用 Perl 包装我的 Java:我想创建一个 Perl 脚本来获取输入参数,然后将它们传递给 Java 程序并运行它。
例如:
如果我的 main 名为 mymain
,我这样调用它:mymain 3 4 hi
(3
, 4
和 hi
是输入参数),我想创建一个名为 myperl
的 Perl 程序,当它作为 myperl 3 4 hi
调用时> 将参数传递给 Java 程序并运行它。
我怎样才能做到这一点?
最佳答案
运行 Java 程序就像运行任何其他外部程序一样。
您的问题有两个部分:
- 如何将参数从 Perl 获取到 Java 程序?
- 如何在 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 .
关于java - 如何从 Perl 调用 Java 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631348/