我是Perl的新手,我正在尝试做一些事情而无法找到答案.
我创建了一个Java项目,其中包含一个获取多个输入参数的主类.
我想用Perl包装我的Java:我想创建一个获取输入参数的Perl脚本,然后将它们传递给Java程序,然后运行它.
例如:
如果我的主叫mymain,我这样称呼它:mymain 3 4 hi(3,4并且hi是输入参数),我想创建一个名为Perl程序myperl,当它被调用作为myperl 3 4 hi将传递参数给Java程序并运行它.
我怎样才能做到这一点?
运行Java程序就像运行任何其他外部程序一样.
你的问题有两个部分:
对于(1)你可以做类似的事情
my $javaArgs = " -cp /path/to/classpath -Xmx256";
my $className = myJavaMainClass;
my $javaCmd = "java ". $javaArgs ." " . $className . " " . join(' ', @ARGV);
Run Code Online (Sandbox Code Playgroud)
注意join()函数 - 它会将所有参数放到Perl程序中并用空格分隔它们.
对于(2)你可以关注@AurA的回答.
使用该system()功能
my $ret = system("$javaCmd");
Run Code Online (Sandbox Code Playgroud)这不会捕获(即放入变量$ret)命令的输出,只是返回代码,就像0成功一样.
使用反引号
my $out = `$javaCmd`;
Run Code Online (Sandbox Code Playgroud)这将使用Java程序的整个输出填充$ out(您可能不需要这样).
使用管道
open(FILE, "-|", "$javaCmd");
my @out = <FILE>
Run Code Online (Sandbox Code Playgroud)这更复杂,但允许在输出上进行更多操作.
有关这方面的更多信息,请参阅perldoc -f open.
| 归档时间: |
|
| 查看次数: |
10142 次 |
| 最近记录: |