Perl:文件协议

时间:2017-02-20 07:23:47

标签: perl

这是我的子程序。但是,当我点击超链接时,它没有做任何事情,而我的期望是打开它指向的文件。

 my $q= new CGI;
  my $tablecontent=[$q->th(['Date', 'Count'])];
  for (sort keys %data) {
    push @$tablecontent,  $q->td([ $_, qq{<a href="file://home/niraj/apache2/log_files/result.$_">$data{$_}} ]) ;
  }
  print $q->table( { border => 1, -width => '20%'},
                   $q->Tr( $tablecontent),
                 );

1 个答案:

答案 0 :(得分:3)

您的Perl代码按预期运行。问题在于您了解网络的运作方式。

您向用户显示如下所示的链接列表:

  • 文件://home/niraj/apache2/log_files/result.xxx

file://协议表示指向文件的链接,该文件位于本地文件系统(运行浏览器的系统本地)上。这些链接不太可能有效。

您需要创建指向文件的网络可访问链接。最简单的方法是创建从log_files目录到Web服务器文档根目录下的目录的符号链接。

您可能会考虑其他一些事项:

  • 间接对象表示法(new CGI)可能会导致一些难以发现的问题。最好使用CGI->new代替。
  • CGI.pm中的HTML创建方法为deprecated for some time。请考虑使用模板系统。
  • 自从CGI成为在Perl中编写Web应用程序的最佳方式以来已经有好几年了。请看一些alternatives