我是Perl的新手,我正在尝试做一些事情而无法找到答案。
我创建了一个Java项目,其中包含一个获取多个输入参数的主类。
我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,并运行它。
例如:
如果我的主叫mymain
,我称之为:mymain 3 4 hi
(3
,4
和hi
是输入参数),我想创建一个名为myperl
的Perl程序,当它调用myperl 3 4 hi
时会将参数传递给Java程序并运行它。
我该怎么做?
答案 0 :(得分:5)
运行Java程序就像运行任何其他外部程序一样。
您的问题分为两部分:
对于(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";