我想从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