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篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容