我想從Java調用Perl腳本,但似乎我無法做到這一點。無法從Java調用Perl腳本
這是我的Perl腳本,它創建一個文件。這是一個簡單的腳本。
use strict;
use warnings;
open(my $fh, '>', 'report.txt');
print $fh "My first report generated by perl\n";
close $fh;
print "done\n";
這是我在上面調用Perl腳本的Java代碼。
package perlfromjava;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PerlFromJava {
public static void main(String[] args) {
try {
String command = "perl $HOME/Documents/hello.pl";
System.out.println(command);
Process proc = Runtime.getRuntime().exec(command);
} catch (IOException ex) {
Logger.getLogger(PerlFromJava.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
當我運行從命令一樣,它是工作完美,但,當我從Java調用Perl腳本,不獲取創建report.txt檔Perl的紙條。
爲什麼會發生?
感謝
您應經常檢查'電話open'是是否成功:'開放的(我的$跳頻, '>', 'REPORT.TXT')或死 「無法打開REPORT.TXT:$!」; '你也可以在你的Perl腳本的頂部添加'use autodie;'來自動執行這些檢查。 – ThisSuitIsBlackNot 2014-11-04 20:47:13
明白了。謝謝:)但是,當我從Java調用Perl腳本的問題,report.txt文件沒有得到創建? – user3745870 2014-11-04 20:53:34
可能。更新您的Perl腳本並重新運行您的Java代碼以查看。如果它仍然不起作用,您至少排除了您的問題的一個可能的來源。如果'open'失敗,'$!'變量會給出確切的原因。 – ThisSuitIsBlackNot 2014-11-04 20:56:20