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