内容

名称

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() 的更危险版本,但可能更快。

它可能会将您从一个无法 chdir() 回来的目录中 chdir() 出来。如果 fastcwd 遇到问题,它将返回 undef,但可能会将您留在不同的目录中。为了额外的安全措施,如果一切看起来都正常,fastcwd() 函数将检查它是否将您留在与开始时相同的目录中。如果它发生了变化,它将以“不稳定的目录路径,当前目录意外更改”的消息 die。这种情况不应该发生。

fastgetcwd
my $cwd = fastgetcwd();

fastgetcwd() 函数作为 cwd() 的同义词提供。

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

getdcwd() 函数也在 Win32 上提供,用于获取指定驱动器上的当前工作目录,因为 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 导入它时,它才会保持最新。

NOTES

AUTHOR

由 perl5-porters <[email protected]> 维护。

COPYRIGHT

版权所有 (c) 2004 年,Perl 5 维护者。保留所有权利。

本程序是自由软件;您可以在 Perl 本身相同的条款下重新发布和/或修改它。

此库中部分 C 代码版权所有 (c) 1994 年,加利福尼亚大学理事会。保留所有权利。此代码的许可证与分发中其余部分的许可证兼容 - 请参阅 Cwd.xs 中的源代码以了解详细信息。

另请参阅

File::chdir