Perl 中的 PathTools 之 Cwd 模塊詳解

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篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容