无法在perl程序中打开浏览器?

时间:2013-06-17 21:06:19

标签: perl

我有一个生成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函数时,它成功打开了该文件。任何理由或解决方案,我该如何使其发挥作用?

3 个答案:

答案 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"});