Cwd - get pathname of current working directory
<b> status: Completed </b>
如下是與本篇相關(guān)的文章:
Perl 中的 PathTools 之 Cwd 模塊詳解
Perl 中的 PathTools 之 File::Spec 模塊詳解
Perl 中的 PathTools 之 File::Spec::Functions 模塊詳解
有關(guān)Perl的學(xué)習(xí)、交流與分享,請關(guān)注專題:碼神之路:Perl篇
簡介
獲取當(dāng)前工作目錄的路徑名,使用方式如下例代碼:
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
這個(gè)模塊提供了用來確定當(dāng)前工作目錄的路徑名的方法。
為了保證可移植性,建議在所有代碼中使用 getcwd(或其他 *cwd 方法)方法。
默認(rèn)導(dǎo)出的函數(shù)有:cwd(),getcwd(),fastcwd(),fastgetcwd() 。
getcwd and friends
這些函數(shù)都不需要轉(zhuǎn)遞參數(shù),他們會返回當(dāng)前工作目錄的絕對路徑。
getcwd
my $cwd = getcwd();
返回當(dāng)前工作目錄
其實(shí)它導(dǎo)出的是一個(gè) POSIX 函數(shù) getcwd(3) ,你可以在Linux系統(tǒng)下使用如下命令(man 3 getcwd)查看手冊頁。
cwd
my $cwd = cwd();
cwd() 是對于當(dāng)前架構(gòu)最自然的形式。它和大多數(shù)系統(tǒng)的 pwd 是相同的,但是他沒有換行符
fastcwd
my $cwd = fastcwd();
相當(dāng)于 getcwd 的一個(gè)不安全的版本,但是相對來說他可能會更快。
如果 fastcwd 遇到問題,它將返回 undef,但是他可能會讓你處在一個(gè)與調(diào)用它之前不同的目錄中。
為了安全性的考慮,程序正常結(jié)束時(shí),會讓你處在調(diào)用它之前所在的目錄。但一旦程序出錯,你將無法正確回到你之前所處的目錄。
fastgetcwd
my $cwd = fastgetcwd();
fastgetcwd 作為 cwd 的別名被提供。
getdcwd
my $cwd = getdcwd();
my $cwd = getdcwd('C:');
因?yàn)?windows 為每個(gè)驅(qū)動器單獨(dú)維護(hù)一個(gè)當(dāng)前工作目錄,所以 getdcwd 提供了獲取指定指定驅(qū)動器當(dāng)前工作目錄的功能。如果沒有指定驅(qū)動器則使用當(dāng)前驅(qū)動器。這個(gè)函數(shù)只是簡單的調(diào)用了微軟的 C 語言函數(shù)庫中的 _getdcwd() 函數(shù)。
abs_path and friends
這些函數(shù)只有在需要時(shí)指定才被導(dǎo)出,他們每個(gè)函數(shù)都需要一個(gè)參數(shù),返回值是一個(gè)絕對路徑。如果沒有指定參數(shù),他們將使用當(dāng)前工作目錄作為默認(rèn)參數(shù)。
abs_path
my $abs_path = abs_path($file);
使用類似 getcwd 的算法,符號鏈接和相對路徑 包括(".","..")都會被解析,返回一個(gè)規(guī)范化的路徑名,就像 linux 中 man 手冊中的 realpath(3)介紹的一樣。(在Linux系統(tǒng)下執(zhí)行man 3 realpath命令可查看手冊頁)
realpath
my $abs_path = realpath($file);
abs_path 的一個(gè)別名
fast_abs_path
my $abs_path = fast_abs_path($file);
有一定的不安全因素,但可能比 abs_path 更快
$ENV{PWD}
如果你要求覆蓋你的內(nèi)置函數(shù) chdir use Cwd qw(chdir);
那么你的環(huán)境變量 PWD 將保持最新,注意,只有當(dāng)所有使用 chdir 的包都從 Cwd 模塊導(dǎo)出 才能使用環(huán)境變量 PWD 一直保持最新。
相關(guān)文章推薦
如下是與本篇相關(guān)的文章:
Perl 中的 PathTools 之 Cwd 模塊詳解
Perl 中的 PathTools 之 File::Spec 模塊詳解
Perl 中的 PathTools 之 File::Spec::Functions 模塊詳解
有關(guān)Perl的學(xué)習(xí)、交流與分享,請關(guān)注專題:碼神之路:Perl篇