在Perl

时间:2015-06-17 07:39:11

标签: linux windows perl

我在Perl中使用系统命令来执行java。我已经形成了一个数组@args,它有不同的选项来执行一个jar文件。如下所示:

$args[0] = $rootpath."/jre/bin/java";
$args[1] = " -jar \"".$rootpath."/temp/abc.jar\"";
$args[2] = " INP=\"".$inputfilename."\"";
$args[3] = " OUT=\"".$outputfilename."\"";
system(@args);

这会在执行时提供一个弹出窗口,我想要禁止它并希望它在后台运行。我希望在Linux中也可以抑制它。我尝试使用tild,但它没有帮助,如下所示。

my $command = @args;
$output = `$command`;

请帮助解决这个问题。

2 个答案:

答案 0 :(得分:1)

使用javaw代替java

这很可能归结为将第一行改为

$args[0] = $rootpath."/jre/bin/javaw";

另见Difference between java.exe and javaw.exe

答案 1 :(得分:0)

我尝试使用Win32 :: SetChildShowWindow(0),它运行得很好。我已经构建了Win32模块并将Win32库链接到我的应用程序。在调用系统命令之前添加以下代码后,不会显示弹出命令提示符窗口。

Win32::SetChildShowWindow(0) 
if defined &Win32::SetChildShowWindow;

您也可以在此处进行讨论:Perlmonks thread