0
请注意下面的子例程应该打印$ sting,其中包含由另一个Java程序生成的一堆信息。问题是$ string最终为空,这表明命令甚至没有运行。当我在IIS之外运行这个脚本时,我实际上得到了我期望的输出。有任何想法吗?从IIS上运行的PERL脚本获取输出的问题
sub getStatus{
my $info = shift;
my $env = lc($info->{'enviroment'});
my ($host,$port) = split("\-", $env);
chomp ($host, $port);
my $cmd = "java ./GetStatus $host $port";
my $string = `$cmd`;
print <<ENDOFTEXT;
HTTP/1.0 200 OK
Content-Type: text/html
<HTML>
<HEAD><TITLE>Cache Status</TITLE></HEAD>
<BODY>
<H4>Cache Status</H4>
$string
</BODY>
</HTML>
ENDOFTEXT
}
尝试使用'GetStatus'的完整路径。另外,'环境'。 – RobEarl
我试着定义GetStatus的完整路径,字符串仍然是空的。我几乎可以肯定,这与IIS设置有关,因为从命令提示符运行此脚本会给我预期的输出,但我没有看到任何影响此操作的IIS。 – syphon228
Cab你'系统()'一些其他的命令,通过IIS写入到标准输出成功?我会怀疑它与已启动的程序STDOUT混合在一起。你可以试试'Expect'模块,但我怀疑这个变化很大。我想最糟糕的情况是让你的Java程序把它的输出打印到你的perl脚本后面读取的临时文本文件中。当然这需要一些时间。 – DeVadder