絕對路徑與相對路徑祥解

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 絕對路徑與相對路徑祥解 (http://www.webasp.net/article/8/7763.htm)
-- 作者:未知
-- 發佈日期: 2003-09-13
新手在安裝  
Perl 程序的時候,對這絕對路徑和相對路徑常常搞不清楚,不知道如何設置。希望看完本文後,能讓你們對此不再糊塗。



1. 什麼是絕對路徑 ?什麼是絕對路徑的相對表示?

  絕對路徑就是你的主頁上的文件或目錄在硬盤上真正的路徑,比如,你的  
Perl 程序是存放在 c:/apache/cgi-bin 下的,那麼 c:/apache/cgi-bin  
就是 CGI-BIN 目錄的絕對路徑(如果你不清楚目錄的絕對路徑,可以問你主頁提供商,也可以用最後的程序自己來檢測)。

  絕對路徑的相對表示其實很好理解,假設你的 Perl 程序是放在  
c:/apache/cgi-bin 下的,如果你要表示這個目錄的絕對路徑,除了上面說的  
c:/apache/cgi-bin 外,你還可以用 . 來表示,因為你的程序就在當前目錄下的。其實這個問題和  
DOS 下的 CD 命令類似的,你如果在 c:windowssystem 目錄下,現在要轉換到  
c:windows 下,那麼你可以用絕對路徑命令:cd c:windows,也可以用絕對路徑的相對表示命令:cd  
..,你現在理解了嗎?
  要注意的是,如果你用的是  
PWS 或 IIS WEB 服務器,那麼路徑必須用絕對路徑來表示,而不能用絕對路徑的相對表示,千萬要注意了!



2. 什麼是相對路徑?什麼是 URL  
相對路徑?
  這兩種說法實際上表達的意思是一樣的。比如,你的  
Perl 程序 URL 是 http://www.CGIer.net/cgi-bin/test.cgi,調用圖片  
URL 是 http://www.CGIer.net/gif/test.gif,如果你要在你的程序中表示此圖片的相對路徑,那麼可以寫成  
http://www.CGIer.net/gif/test.gif,或者是 /gif/test.gif  
。說白了,相對路徑其實就可以理解為 URL。



3. 絕對路徑如何檢測?
  運行如下子程序,返回變量  
$mypath 的值就是此 Perl 程序當前所在目錄的絕對路徑。  

sub mypath
{
    local  
$temp;
    $temp=__FILE__;

    $temp=~ s/\///g if ($temp=~/\/);

    if ($temp) {
      $mypath=substr($temp,0,rindex($temp,"/"));

    }
    else  
{
      $mypath=substr($ENV{'PATH_TRANSLATED'},0,rindex($ENV{'PATH_TRANSLATED'},"\"));

      $mypath=~ s/\///g;

    }
    return  
$mypath;
}




4. 相對路徑如何檢測?

  運行如下子程序,返回變量 $myurl 的值就是此 Perl  
程序當前所在目錄的相對路徑。  
sub myurl
{

    local $server_port,$fullurl;

    $server_port = ":$ENV{'SERVER_PORT'}"  
if ($ENV{'SERVER_PORT'} ne '80');
    $fullurl  
    = "http://$ENV{'SERVER_NAME'}$server_port$ENV{'SCRIPT_NAME'}";

    $myurl       =  
substr($fullurl,0,rindex($fullurl,"/"));

    return $myurl;
}



webasp.net