File::Basename module

 

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)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章