2010-08-11 30 views

Trả lời

25
use File::Basename; 

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

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

Đọc thêm về File::Basename trong perldoc.

3

Sử dụng các module File::Basename lõi:

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

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

này in ra:

/etc/sysconfig

31

Coi chừng! dirname() là cố ý câm để thi đua lệnh dirname trình bao. Nó không phải là quá nhiều "cung cấp cho tôi một phần thư mục của đường dẫn tập tin này" như "cho tôi tất cả, nhưng phần cuối cùng của con đường này". Tại sao điều đó quan trọng?

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

Điều này là tốt, miễn là bạn nhận ra rằng dirname không trả về tên dir.

Nếu bạn muốn ở trên trả lại /foo/bar/, bạn nên sử dụng Tệp :: Spec.

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

dirname() là pitfall, splitpath() là câu trả lời hay nhất; bỏ phiếu này là giải pháp trả lời. – AjayKumarBasuthkar

Các vấn đề liên quan