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
方法)方法。
默认导出的函数有:cwd()
,getcwd()
,fastcwd()
,fastgetcwd()
。
getcwd and friends
这些函数都不需要转递参数,他们会返回当前工作目录的绝对路径。
getcwd
my $cwd = getcwd();
返回当前工作目录
其实它导出的是一个 POSIX 函数 getcwd(3)
,你可以在Linux系统下使用如下命令(man 3 getcwd
)查看手册页。
cwd
my $cwd = cwd();
cwd()
是对于当前架构最自然的形式。它和大多数系统的 pwd
是相同的,但是他没有换行符
fastcwd
my $cwd = fastcwd();
相当于 getcwd
的一个不安全的版本,但是相对来说他可能会更快。
如果 fastcwd
遇到问题,它将返回 undef
,但是他可能会让你处在一个与调用它之前不同的目录中。
为了安全性的考虑,程序正常结束时,会让你处在调用它之前所在的目录。但一旦程序出错,你将无法正确回到你之前所处的目录。
fastgetcwd
my $cwd = fastgetcwd();
fastgetcwd
作为 cwd
的别名被提供。
getdcwd
my $cwd = getdcwd();
my $cwd = getdcwd('C:');
因为 windows 为每个驱动器单独维护一个当前工作目录,所以 getdcwd
提供了获取指定指定驱动器当前工作目录的功能。如果没有指定驱动器则使用当前驱动器。这个函数只是简单的调用了微软的 C 语言函数库中的 _getdcwd()
函数。
abs_path and friends
这些函数只有在需要时指定才被导出,他们每个函数都需要一个参数,返回值是一个绝对路径。如果没有指定参数,他们将使用当前工作目录作为默认参数。
abs_path
my $abs_path = abs_path($file);
使用类似 getcwd
的算法,符号链接和相对路径 包括(".","..")都会被解析,返回一个规范化的路径名,就像 linux 中 man 手册中的 realpath(3)
介绍的一样。(在Linux系统下执行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}
如果你要求覆盖你的内置函数 chdir
use Cwd qw(chdir);
那么你的环境变量 PWD
将保持最新,注意,只有当所有使用 chdir
的包都从 Cwd
模块导出 才能使用环境变量 PWD
一直保持最新。
相关文章推荐
如下是与本篇相关的文章:
Perl 中的 PathTools 之 Cwd 模块详解
Perl 中的 PathTools 之 File::Spec 模块详解
Perl 中的 PathTools 之 File::Spec::Functions 模块详解
有关Perl的学习、交流与分享,请关注专题:码神之路:Perl篇