目錄

名稱

cwd - 獲取當前工作目錄的路徑名稱

概要

use Cwd;
my $dir = getcwd;

use Cwd 'abs_path';
my $abs_path = abs_path($file);

描述

本模塊提供了用於確定當前工作目錄的路徑名稱的函數。建議在所有代碼中使用 getcwd(或另一個 *cwd() 函數)以確保可移植性。

默認情況下,它將這些函數 cwd()、getcwd()、fastcwd() 和 fastgetcwd()(在 Win32 上還有 getdcwd())導出到調用者的命名空間。

getcwd 和相關功能

這些函數都是無參數調用的,並返回當前工作目錄的絕對路徑。

getcwd
my $cwd = getcwd();

返回當前工作目錄。出錯時返回 undef,並設置 $! 以指示錯誤。

公開 POSIX 函數 getcwd(3),如果不可用則重新實現。

cwd
my $cwd = cwd();

cwd() 是目前架構中最自然的形式。對於大多數系統來說,它與 `pwd` 相同(但不帶有尾隨的行結束符)。

fastcwd
my $cwd = fastcwd();

getcwd() 的一個更危險的版本,但潛在速度更快。

它可能會將您切換到無法切換回來的目錄中。如果 fastcwd 遇到問題,它將返回 undef,但可能會將您留在不同的目錄中。為了額外的安全性,如果一切都似乎正常,fastcwd() 函數將檢查它是否將您留在與開始時相同的目錄中。如果它已更改,它將以消息“目錄路徑不穩定,當前目錄意外更改”引發 die。這不應該發生。

fastgetcwd
my $cwd = fastgetcwd();

fastgetcwd() 函數是 cwd() 的同義詞。

getdcwd
my $cwd = getdcwd();
my $cwd = getdcwd('C:');

在 Win32 上還提供了 getdcwd() 函數,用於獲取指定驅動器上的當前工作目錄,因為 Windows 為每個驅動器維護一個單獨的當前工作目錄。如果未指定驅動器,則假定為當前驅動器。

此函數僅簡單地調用 Microsoft C 函數庫 _getdcwd() 函數。

abs_path 和相關函數

這些函數僅在需要時導出。它們各自接受一個參數並返回其絕對路徑名。如果沒有給出參數,它們將使用當前工作目錄。

abs_path
my $abs_path = abs_path($file);

使用與 getcwd() 相同的算法。符號連結和相對路徑組件(“。”和“..”)將解析為返回規範路徑名,就像 realpath(3) 一樣。如果出錯,則返回 undef,並設置 $! 以指示錯誤。

realpath
my $abs_path = realpath($file);

abs_path() 的同義詞。

fast_abs_path
my $abs_path = fast_abs_path($file);

abs_path 的一個更危險但潛在速度更快的版本。

$ENV{PWD}

如果您要求覆蓋您的 chdir() 內建函數,

use Cwd qw(chdir);

那麼您的PWD環境變數將保持最新。請注意,只有在所有使用chdir的套件從Cwd進口時,它才會保持最新。

注意事項

作者

由perl5-porters <perl5-porters@perl.org>維護。

版權

版權所有(c)2004年由Perl 5 Porters保留所有權利。

本程序是自由軟件;您可以根據Perl本身的相同條款重新分發或修改它。

本庫中部分C代碼的版權(c)1994年由加州大學董事會保留所有權利。此代碼的許可與分發的其餘部分的許可兼容-請參見Cwd.xs中的源代碼以獲取詳細信息。

參見

File::chdir