Perl 中的 PathTools 之 Cwd 模块详解

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篇

    原文作者:JSON_NULL
    原文地址: https://www.jianshu.com/p/dfd53c5ada1f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞