我有一个生成HTML报告的perl代码。程序执行结束后,我想启动html文件浏览器。
for (i<0; $i<$#files; $i++) {
if (condition is met) {
&sub_pass(prints to html file)
}
else {
&sub_fail(prints to html file)
}
}
my @url_report = "C://path/to/htmlfile/";
system("explorer @url_report");
但这不会启动html文件,我想要。当我在for循环之前调用System函数时,它成功打开了该文件。任何理由或解决方案,我该如何使其发挥作用?
答案 0 :(得分:4)
explorer
是一个Windows程序,并不像Perl那样容易使用你使用的路径分隔符。也就是说,你需要使用反斜杠。
my $url_report = "C:\\path\\to\\htmlfile\\";
system("explorer $url_report");
答案 1 :(得分:2)
这里的变量url_report
是一个数组,而不是标量:
my @url_report = "C://path/to/htmlfile/";
system("explorer @url_report");
您可以尝试将其从数组更改为标量,并且您还可以使用从system()
检索错误消息的功能:
my $url_report = "C://path/to/htmlfile/";
system("explorer $url_report") == 0 or die "could not open file: $url_report ($?)";
更详细的错误消息可帮助您进一步排查问题。
答案 2 :(得分:0)
"C://Users/path/output.html/"
应该是
"C:\\Users\\path\\output.html"
虽然有可能explorer
接受以下内容(因为内核会这样做):
"C:/Users/path/output.html"
如果您使用用户选择的浏览器会更好:
my $url_report = "C:\\Users\\path\\output.html";
system(qq{start "" "$url_report"});