2017-02-20 84 views
-1

這是我的子程序。但是當我點擊超鏈接時,它不會做任何事情,而我的期望是打開它指向的文件。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), 
       ); 
+4

不計算代碼示例的其他問題,你的意思是**點擊** *在瀏覽器中?*如果是的話,如果沒有任何與Perl代碼... – jm666

回答

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
+0

明白了。非常感謝。 現在正常工作。 –