Cwd - get pathname of current working directory
<b> status: Completed </b>
如下是與本篇相關的文章:
Perl 中的 PathTools 之 Cwd 模塊詳解
Perl 中的 PathTools 之 File::Spec 模塊詳解
Perl 中的 PathTools 之 File::Spec::Functions 模塊詳解
有關Perl的學習宗苍、交流與分享呢簸,請關注專題:碼神之路:Perl篇
簡介
獲取當前工作目錄的路徑名,使用方式如下例代碼:
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
這個模塊提供了用來確定當前工作目錄的路徑名的方法锰悼。
為了保證可移植性,建議在所有代碼中使用 getcwd
(或其他 *cwd
方法)方法团赏。
默認導出的函數(shù)有:cwd()
,getcwd()
,fastcwd()
,fastgetcwd()
箕般。
getcwd and friends
這些函數(shù)都不需要轉遞參數(shù),他們會返回當前工作目錄的絕對路徑舔清。
getcwd
my $cwd = getcwd();
返回當前工作目錄
其實它導出的是一個 POSIX 函數(shù) getcwd(3)
丝里,你可以在Linux系統(tǒng)下使用如下命令(man 3 getcwd
)查看手冊頁。
cwd
my $cwd = cwd();
cwd()
是對于當前架構最自然的形式体谒。它和大多數(shù)系統(tǒng)的 pwd
是相同的杯聚,但是他沒有換行符
fastcwd
my $cwd = fastcwd();
相當于 getcwd
的一個不安全的版本尸执,但是相對來說他可能會更快衬横。
如果 fastcwd
遇到問題,它將返回 undef
,但是他可能會讓你處在一個與調用它之前不同的目錄中趾牧。
為了安全性的考慮故响,程序正常結束時傀广,會讓你處在調用它之前所在的目錄。但一旦程序出錯彩届,你將無法正確回到你之前所處的目錄伪冰。
fastgetcwd
my $cwd = fastgetcwd();
fastgetcwd
作為 cwd
的別名被提供。
getdcwd
my $cwd = getdcwd();
my $cwd = getdcwd('C:');
因為 windows 為每個驅動器單獨維護一個當前工作目錄惨缆,所以 getdcwd
提供了獲取指定指定驅動器當前工作目錄的功能糜值。如果沒有指定驅動器則使用當前驅動器丰捷。這個函數(shù)只是簡單的調用了微軟的 C 語言函數(shù)庫中的 _getdcwd()
函數(shù)。
abs_path and friends
這些函數(shù)只有在需要時指定才被導出寂汇,他們每個函數(shù)都需要一個參數(shù)病往,返回值是一個絕對路徑。如果沒有指定參數(shù)骄瓣,他們將使用當前工作目錄作為默認參數(shù)停巷。
abs_path
my $abs_path = abs_path($file);
使用類似 getcwd
的算法,符號鏈接和相對路徑 包括(".","..")都會被解析榕栏,返回一個規(guī)范化的路徑名畔勤,就像 linux 中 man 手冊中的 realpath(3)
介紹的一樣。(在Linux系統(tǒng)下執(zhí)行man 3 realpath
命令可查看手冊頁)
realpath
my $abs_path = realpath($file);
abs_path
的一個別名
fast_abs_path
my $abs_path = fast_abs_path($file);
有一定的不安全因素扒磁,但可能比 abs_path
更快
$ENV{PWD}
如果你要求覆蓋你的內置函數(shù) chdir
use Cwd qw(chdir);
那么你的環(huán)境變量 PWD
將保持最新庆揪,注意,只有當所有使用 chdir
的包都從 Cwd
模塊導出 才能使用環(huán)境變量 PWD
一直保持最新妨托。
相關文章推薦
如下是與本篇相關的文章:
Perl 中的 PathTools 之 Cwd 模塊詳解
Perl 中的 PathTools 之 File::Spec 模塊詳解
Perl 中的 PathTools 之 File::Spec::Functions 模塊詳解
有關Perl的學習缸榛、交流與分享,請關注專題:碼神之路:Perl篇