Cwd - 获取当前工作目录的路径名
use Cwd;
my $dir = getcwd;
use Cwd 'abs_path';
my $abs_path = abs_path($file);
此模块提供用于确定当前工作目录路径名的函数。建议在所有代码中使用 getcwd(或其他 *cwd() 函数)以确保可移植性。
默认情况下,它将函数 cwd()、getcwd()、fastcwd() 和 fastgetcwd()(以及在 Win32 上的 getdcwd())导出到调用者的命名空间。
这些函数都无需参数调用,并返回当前工作目录的绝对路径。
my $cwd = getcwd();
返回当前工作目录。如果出错,则返回 undef
,并将 $!
设置为指示错误。
公开 POSIX 函数 getcwd(3) 或在它不可用时重新实现它。
my $cwd = cwd();
cwd() 是当前架构最自然的形式。对于大多数系统,它与 `pwd` 相同(但没有尾随换行符)。
my $cwd = fastcwd();
getcwd() 的更危险版本,但可能更快。
它可能会将您从一个无法 chdir() 回来的目录中 chdir() 出来。如果 fastcwd 遇到问题,它将返回 undef,但可能会将您留在不同的目录中。为了额外的安全措施,如果一切看起来都正常,fastcwd() 函数将检查它是否将您留在与开始时相同的目录中。如果它发生了变化,它将以“不稳定的目录路径,当前目录意外更改”的消息 die
。这种情况不应该发生。
my $cwd = fastgetcwd();
fastgetcwd() 函数作为 cwd() 的同义词提供。
my $cwd = getdcwd();
my $cwd = getdcwd('C:');
getdcwd() 函数也在 Win32 上提供,用于获取指定驱动器上的当前工作目录,因为 Windows 为每个驱动器维护一个单独的当前工作目录。如果未指定驱动器,则假定为当前驱动器。
此函数只是调用 Microsoft C 库 _getdcwd() 函数。
这些函数仅在请求时导出。它们每个都接受一个参数并返回它的绝对路径名。如果没有给出参数,它们将使用当前工作目录。
my $abs_path = abs_path($file);
使用与 getcwd() 相同的算法。符号链接和相对路径组件(“.” 和 “..”)被解析为返回规范路径名,就像 realpath(3) 一样。发生错误时返回 undef
,$!
设置为指示错误。
my $abs_path = realpath($file);
abs_path() 的同义词。
my $abs_path = fast_abs_path($file);
一个更危险但可能更快的 abs_path 版本。
如果您要求覆盖您的 chdir() 内置函数,
use Cwd qw(chdir);
那么您的 PWD 环境变量将保持最新。请注意,只有在所有使用 chdir 的包都从 Cwd 导入它时,它才会保持最新。
由于路径分隔符在某些操作系统上不同(Unix 上为“/”,MacPerl 上为“:” 等),因此我们建议您在可移植性成为问题时使用 File::Spec 模块。
实际上,在 Mac OS 上,getcwd()
、fastgetcwd()
和 fastcwd()
函数都是 cwd()
函数的别名,该函数在 Mac OS 上调用 `pwd`。同样,abs_path()
函数是 fast_abs_path()
的别名。
由 perl5-porters <[email protected]> 维护。
版权所有 (c) 2004 年,Perl 5 维护者。保留所有权利。
本程序是自由软件;您可以在 Perl 本身相同的条款下重新发布和/或修改它。
此库中部分 C 代码版权所有 (c) 1994 年,加利福尼亚大学理事会。保留所有权利。此代码的许可证与分发中其余部分的许可证兼容 - 请参阅 Cwd.xs 中的源代码以了解详细信息。