2010-05-24 28 views
14

Trong trường hợp của Java, chúng ta có thể nhận được phân cách đường dẫn sử dụngLàm thế nào tôi có thể nhận được phân cách thư mục (đường dẫn tệp) trong Perl?

System.getProperty("path.separator"); 

Có cách nào tương tự trong Perl? Tất cả những gì tôi muốn làm là tìm một thư mục, thư mục con ngay lập tức. Giả sử tôi đang được trao hai đối số $a$b; Tôi đang tách phần đầu tiên dựa trên dấu phân cách đường dẫn và nối lại nó trừ đoạn cuối cùng và so sánh với đối số thứ hai.

Vấn đề là mã của tôi phải chung chung và tôi cần biết phân tách đường dẫn phụ thuộc vào hệ thống là gì?

+1

Bạn có thấy các câu hỏi khác không? http://stackoverflow.com/questions/2859015/why-dont-my-perl-regexes-correctly-extract-a-filename-from-a-path, http://stackoverflow.com/questions/1818093/how- có thể-i-xây dựng-os-độc lập-file-đường dẫn-trong-perl – Zaid

+5

Vì lợi ích của công cụ tìm kiếm: câu hỏi và câu trả lời này thực sự đối phó với dấu phân cách thư mục (thường là dấu gạch chéo hoặc dấu gạch chéo ngược). Dấu tách đường dẫn là một thứ khác (thường là dấu hai chấm hoặc dấu chấm phẩy) với một mục đích khác và được trả về bởi 'sử dụng Config; $ Config {path_sep} '. – daxim

+0

@daxim - Tôi đã chỉnh sửa tiêu đề, hy vọng nó ít mơ hồ hơn bây giờ – DVK

Trả lời

3

Câu trả lời được chấp nhận giải quyết vấn đề thực sự của bạn, nhưng nếu bạn thực sự muốn nhận được phân cách (sử dụng module lõi chỉ perl):

my $sep = File::Spec->catfile('', ''); 

Điều này kết hợp hai tên tệp trống với dấu phân cách của hệ thống hiện tại, chỉ để lại dấu tách.

20

Bạn không nên tạo đường dẫn tập tin bằng tay - thay vì sử dụng File::Spec mô-đun:

($volume, $directories,$file) = File::Spec->splitpath($path); 
@dirs = File::Spec->splitdir($directories); 
$path = File::Spec->catdir(@directories); 
$path = File::Spec->catfile(@directories, $filename); 
+0

Đừng quên chia nhỏ. Một cách thanh lịch hơn để làm việc với các đường dẫn là Đường dẫn :: Lớp có sẵn từ CPAN. – Schwern

+0

@Schwern - Tôi không cảm thấy thoải mái khi giới thiệu Đường dẫn :: Lớp như tôi chưa bao giờ sử dụng nó ... nhưng tôi đã thấy các đề xuất cho nó ở nơi khác trên SO vì vậy tôi sẽ kiểm tra. Tốt điểm về splitdir - mặc dù tôi sợ nếu tôi tiếp tục đi câu trả lời sẽ biến thành bản sao/dán của POD :) – DVK

+0

Đường dẫn :: Lớp là tuyệt vời, dễ sử dụng hơn nhiều so với các lựa chọn thay thế. – singingfish

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