perl有句格言:There is more than one way to do it。意思就是任何问题用perl都有好几种解决方法。以前处理文件路径的时候都是自己写正则表达式,而用perl的模块来解决则更加迅速、准确。

1). File::Basename

有3个方法:fileparse、basename、dirname。 
用法: 
       ($name,$path,$suffix) = fileparse($fullname,@suffixlist); 
        $basename = basename($fullname,@suffixlist); 
        $dirname = dirname($fullname);

说明: 
a) 方法fileparse是将一个文件的全路径拆成三部分,文件名、目录名和后缀,@suffixlist是给一个后缀的集合。例如 
($base,$path,$type) = fileparse('\\virgil\\aeneid\\draft.book7', qr{\.book\d+}); 
则输出 $base ==> draft; $path ==> \virgil\aeneid\; $type ==> book7。 
b) 方法basename和fileparse的输入格式一样,返回的是文件名加后缀。 
c) 方法dirname返回文件目录名。 
注意,dirname和fileparse第二个返回值的比较: 
i) 目录结尾有无\; 
dirname('\\virgil\\aeneid\\draft.book7') ==> \virgil\aeneid 
fileparse('\\virgil\\aeneid\\draft.book7') ==> \virgil\aeneid\ 
ii) 输入参数为目录; 
dirname('virgil\\') ==> . 
fileparse('virgil\\') ==> virgil\

2). File::Spec::Functions

这个模块输出File::Spec类的方法,分为两类: 
(1) 可直接调用: 
canonpath||catdir||catfile||curdir||rootdir||updir||no_upwards||file_name_is_absolute||path 
(2) 以 File::Spec->方法名的形式调用: 
devnull||tmpdir||splitpath||splitdir||catpath||abs2rel||rel2abs||case_toleran

这里举几个常用的方法说明一下: 
a) 方法catdir:将目录合并, 
catfile('a','b','c') ==> a\b\c 
b) 方法splitdir:与catdir相反,拆分目录 
File::Spec->splitdir('a\\b\\c\\') ==>('a','b','c',' ') #注意最后有个空格

3). File::Path

有2个方法:mkpath和rmtree,分别为创建目录和删除目录。

perl语言本身自带了mkdir和rmdir,那为什么还要选用 mkpath和rmtree呢?自带的mkdir只能一次创建一级目录,而mkpath则可以一次创建多级;rmdir必须要求目录为空,而rmtree 则任意。总之,File::Path为我们提供了另一种创建和删除目录的机制,由用户自己选用。

说明: 
a) mkpath(directory, 1, 0711); 
第一个参数为目录名,第二个参数为一个bool值,为真的时候打印每次创建的目录,默认为假,最后一个参数为目录的权限。 
b) rmtree(directory, 1, 1); 
第一个参数为目录名,第二个参数为一个bool值,为真的时候打印删除文件时的一些信息,默认为假,最后一个参数也是一个bool值,为真的时候对没有删除权限的文件直接跳过。

perl 处理文件路径的一些模块的更多相关文章

  1. Perl构建和打包自己的模块

    当写好一个或多个模块后,可以将它构建.打包成"tar.gz",以便让别人安装或者上传到CPAN(如果愿意的话).对于模块的使用者来说,也不用再使用use lib 'LIB_PATH ...

  2. perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径

    不会读取 影藏文件 main #!/usr/bin/perl use autodie; use utf8; use Encode qw(decode encode); if(@ARGV ne 3){ ...

  3. Python模块学习:glob 文件路径查找

    glob模块是最简单的模块之一,内容非常少. 用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多. 查找文件只用到三个匹配符:”*”, “?”, “[]”. ”*”匹配0个或 ...

  4. 37.Node.js工具模块---处理和转换文件路径的工具 Path模块

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方 ...

  5. 使用os模块动态获取目录或文件路径

    在接口自动化测试框架中,我们的代码除了能在本地运行,也能在不在修改代码的前提下在其他的环境下能够运行,这样才能达到高复用性和低维护成本,我们在接口测试的模块调用中,会定义很多相关路径,而这些路径必须使 ...

  6. python 获取导入模块的文件路径

    接触到项目上有人写好的模块进行了导入,想查看模块的具体内容是如何实现的,需要找到模块的源文件. 本博文介绍两种查找模块文件路径方法: 方法一: #!/usr/bin/python # -*- codi ...

  7. 在Python中使用glob模块查找文件路径的方法

    在Python中使用glob模块查找文件路径的方法 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用到三个匹配符: ...

  8. 获取当前文件路径 import 原理 一般把模块组成的集合称为包(package)

    获取当前文件路径 testpath.py import sysprint(sys.path) [root@d mapReduceLog]# python testpath.py['/data/mapR ...

  9. C# Winform中如何获取文件名与文件路径

    获取文件名方法: 用System.IO.Path.GetFileName和System.IO.Path.GetFileNameWithoutExtension(无扩展名)的方法 获取文件路径方法: / ...

随机推荐

  1. 开机启动+Linux发送邮件

    需求:检测Linux上Tomcat是否允许,挂了的话给运维发送邮件通知 实现:编写脚本一直检测Tomcat进程是否存活,否则给运维发送邮件,脚本设置开机时自动启动 1.Linux发送邮件 vim /e ...

  2. mouseover等闪烁问题

    在使用mouseover等鼠标事件时如移动上去灰色的遮罩层高度从0到100% 在操作中发现鼠标一直在图里面但遮罩会一直变化,我感觉应该是遮罩层出现后导致鼠标离开了底层图片所以会一直变化.想起之前用的 ...

  3. React 实践记录 02 Flux introduction

    Introduction 本文组成: React 官方文档翻译 相关实践心得. 内容上是Flux的介绍,例子将会在以后写出. 一旦稍微多了解一点React,很难避免听到Flux这个名词. Flux是一 ...

  4. POJ 3162 Walking Race (树的直径,单调队列)

    题意:给定一棵带边权的n个节点的树,首先要求出每个点的最长路,然后写成序列d[1],d[2]...d[n],然后求满足 区间最大值-区间最小值<=k 的最大区间长度为多少? 思路: 分两步进行: ...

  5. python一周速成学习笔记

    目录 一:语法元素 1.注释,变量,空格的使用 2.输入函数,输出函数 3.分支语句,循环语句 4.保留字in,同步赋值 5.import与def以及turtle库 6.eval函数与repr函数 二 ...

  6. 强化学习_Deep Q Learning(DQN)_代码解析

    Deep Q Learning 使用gym的CartPole作为环境,使用QDN解决离散动作空间的问题. 一.导入需要的包和定义超参数 import tensorflow as tf import n ...

  7. js 上传图片

    <div class="block-input" style="height: 90px"> <span><i class=&qu ...

  8. (五)使用Docker镜像(上)

    1. 获取镜像 # 获取镜像 docker pull image:tag // 不使用tag 默认下载latest标签的镜像,即最新的镜像. 2. 查看镜像信息 # 查看镜像信息docker imag ...

  9. mysql安装(docker)

    mkdir /opt/mysql vim /opt/mysql/Dockerfile 5.7 FROM alpine FROM mysql:5.7.26 EXPOSE 3306 8.0 FROM al ...

  10. JS实现跑马灯效果(向左,向上)

    <html> <head> <title>JS实现跑马灯效果</title> <style> * { font-size:12px; fon ...