您的位置:首页 > 其它

File::Basename module

2012-05-28 23:21 483 查看
File:Basename module

=1= use File::Basename;

=2= use File::Basename qw/basename, dirname, fileparse/

=3= use File::Basename qw/basename/;

=4= use File::Basename qw//;

=5= use File::Basename ();


1、使用说明

(1)File::Basename模块有三个参数,basename提取的是最后一个斜线(/)之后的内容,dirname提取的是最后一个斜线(/)之前的内容,前面的俗称文件名,后面的俗称文件路径。Fileparse提取的是文件名后缀,需要事先指定,比如 .pl .txt .gz.

(2)=1=和=2=等价,是最常用的情况,当调用File::Basename模块时,同时引入了三个函数。要是不想引入函数或者只引入某个函数,那么就是情况=3,4,5=了,请注意=1=和=5=的区别。

注:为了以后调用方面,在什么情况下都不使用三个函数名是可取的,那么就可以大胆的使用=1=,不过后面的几种情况要明白,有时候要看别人的程序,不至于不懂是什么意思。

(3)=4,5=的情况下,调用函数要用全称,如:

my $name = “/usr/local/bin/perl”;

my $basename=File::Basename::basename $name;

my $dirname = File::Basename::dirname $name;

注:主意区分模块中的大小写,写错了可就麻烦了,比如use File::Basename;写成use File::basename;调用就要失败了。

2、使用实例

(1)代码

#!/usr/bin/perl

use strict;

use warnings;

use File::Basename;

my $fullname = '/ifs5/ST_COMG/USER/yanzengli/other/perl.debug.pl';

my @suffixlist = qw(.exe .pl .txt);

my ($name, $path, $suffix) = fileparse ($fullname, @suffixlist);

print "name = $name\n";

print "path = $path\n";

print "suffix = $suffix\n";

$name = fileparse ( $fullname, @suffixlist);

print "name = $name\n";

my $Basename = basename ( $fullname, @suffixlist );

print "Basename = $Basename\n";

my $dirname = dirname ($fullname);

print "dirname = $dirname\n";

====out

name = perl.debug

path = /ifs5/ST_COMG/USER/yanzengli/other/

suffix = .pl

name = perl.debug

Basename = perl.debug

dirname = /ifs5/ST_COMG/USER/yanzengli/other


(2)代码功能

从一个路径中提取文件路径、文件名和文件后缀。

(3)注意事项

@--@后缀没有匹配上时,fileparse和basename提取的内容是一样的,都是最后一个斜线后面的内容,但是fileparse和dirname提取的内容会差一个”/”,这个是要小心的内容,perldoc并没有说明这一点。这个可以用以下语句实验一下:

my $fullname = '/ifs5/ST_COMG/USER/yanzengli/other/perl.debug.pl.gz';


@--@后缀匹配上的时候,也就是源代码的情况。fileparse和basename提取的内容是一致的,但是不是斜线后面的全部内容,是去掉匹配上的后缀后的内容。这个也是要小心的。fileparse和basename和没有匹配上情况一致。还有一个是后缀,事先list然后提取,不list和没有匹配上的情况是一致的。

reference:参考了perl中国上的内容(http://www.perlcn.com/perlbc/perljj/346.html)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: