perl 处理文件路径的一些模块
来源:互联网 发布:java中的this 编辑:程序博客网 时间:2024/05/19 14:54
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值,为真的时候对没有删除权限的文件直接跳过。
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值,为真的时候对没有删除权限的文件直接跳过。
阅读全文
0 0
- perl 处理文件路径的一些模块
- Perl自定义模块的路径包含问题
- linux下perl的模块路径
- Perl自定义模块的路径包含问题
- perl 处理文件中的一些空字符
- 如何安装Perl模块的一些方法
- 一些日文处理的正则表达式(Perl)
- perl获取当前执行文件的路径
- Perl自定义模块的路径包含问题(转载)
- Node之文件路径处理模块:path模块
- Perl Email处理几个模块之间的关系
- 文件的一些处理
- 文件路径的一些方法
- Linux 检查是否安装perl模块及列出所有已安装的perl模块(安装路径、版本号)
- Perl 处理excel文件
- Perl处理Excel文件
- perl 文件处理
- Perl处理Excel文件
- 书籍阅读
- 编程题赏析4之微信红包
- 【JS】:JS实现判断输入字符串是否合乎邮箱格式
- Wex5 this.comp().val() of undefined 解决方法
- linux squid 普通代理 透明代理 反向代理
- perl 处理文件路径的一些模块
- 有关LateX概念总结
- 【php+centos7+pgsql】centos下面配置php访问postgresql的方式
- PHP中的回调
- 网站因为什么被降权
- Java总结输入流输出流
- 用VBA在EXCEL中实现九九乘法表制作,并加上边框
- 【干货】:怎么让元素水平排列
- VC运行时库(/MD、/MT等)