• perl 处理文件路径的一些模块


    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{.bookd+}); 
    则输出 $base ==> draft; $path ==> virgilaeneid; $type ==> book7。 
    b) 方法basename和fileparse的输入格式一样,返回的是文件名加后缀。 
    c) 方法dirname返回文件目录名。 
    注意,dirname和fileparse第二个返回值的比较: 
    i) 目录结尾有无; 
    dirname('\virgil\aeneid\draft.book7') ==> virgilaeneid 
    fileparse('\virgil\aeneid\draft.book7') ==> virgilaeneid 
    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') ==> ac 
    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值,为真的时候对没有删除权限的文件直接跳过。

  • 相关阅读:
    selenium产生的垃圾文件清理
    英语学习词根法
    ecommerce学习
    tfs2012安装
    转载文件,英语学习
    Mishka and Divisors CodeForces
    Codeforces Round #364 (Div. 1) (差一个后缀自动机)
    莫比乌斯反演练习
    bzoj 1267 Kth Number I (点分治,堆)
    程序员的绘图利器 — Gnuplot
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6923202.html
Copyright © 2020-2023  润新知