2010-08-11 21 views

cevap

25
use File::Basename; 

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

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

perldoc.

3

Kullanım File::Basename çekirdek modülü:

use strict; 
use warnings; 
use File::Basename; 

my $FILE = '/etc/sysconfig/network'; 
my $DIR = dirname($FILE); 
print $DIR, "\n"; 

Bu yazdırır:

/etc/sysconfig

31

dikkat! dirname(), dirname kabuk komutunu taklit etmek için kasıtlı olarak aptalcadır. "Bu dosya yolunun dizinini bana ver" o kadar çok değil, "bu yolun son kısmını ama hepsini ver" şeklinde değil. Bu neden önemli?

my $dir = "/foo/bar/"; # obviously a directory 
print dirname($dir);  # prints /foo 

Bu sadece çok uzun dirname dirname dönmez farkında olarak, gayet iyi.

Yukarıdakilerin /foo/bar/ değerini döndürmesini istiyorsanız, File :: Spec.

use File::Spec; 
my($vol,$dir,$file) = File::Spec->splitpath($path); 
+0

dirname() pitfall, splitpath() en iyi yanıttır; bunu çözüm cevabı olarak oylayın. – AjayKumarBasuthkar

İlgili konular