perl缺失的一个小功能normalize path

作者:上海建筑防水有限公司  来源:www.yxjzfs.com   发布时间:2017-09-07 13:29:20
perl缺失的一个小功能normalize path 我在处理strace输出的log时,遇到一个问题,log中记录的打开的文件名

"../../c/../m"

是这样的,其中c是一个symbolic link。我期望它能转换为绝对路径,但是不要帮我翻译symbolic link。就这个小功能,可是让我尝试了好几天。说到这里,采集软件,可能很多会想abs_path()不就行了么。错!abs_path()会真正的访问文件系统,所以会将symbolic link转成真正的文件。这样的结果不是我要的。

最终锁定在

[python]

File::Spec->rel2abs()

这个函数,可是你会发现,采集软件,他只能帮你转换为

“/v/c/../m”

这个函数并不会真正去访问文件系统,只是把开头的..转换为绝对路径的开头。

余下的工作,我还得把路径中间的..也去掉。没有任何现成函数可以使用,所以我自己实现了一个。

=item normalizefilepath Description: normalize file path /v/c/../m -> /v/m Parameter: @file path string Return: normalized path =cut sub normalizefilepath { my $path = shift; my $newpath; do [^/][^/]*\/\.\.\/ while $newpath ne $path; return $newpath; }

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:神农架SEO http://shennongjia.raoyu.net


上一篇:软文营销 你真的能够得心应手吗?
下一篇:最后一页