Tôi thực sự nên biết điều này, nhưng tôi đã làm việc chủ yếu với Linux, Mac OS X và Windows mà tất cả đều sử dụng dấu gạch chéo (/
) làm phân cách thư mục (Windows có thể sử dụng \
hoặc /
.) .Perl Xử lý Directory Separators
Điều đó có nghĩa là khi tôi thường viết chương trình trong Perl, tôi có thể chỉ cần sử dụng /
làm dấu tách thư mục và mọi thứ đều ổn. Tuy nhiên, tôi biết rằng File::Spec
giả sử cho phép tính di động của các trình phân tách tệp (điều đó có nghĩa là gì).
Nếu tôi đang sử dụng hệ thống không sử dụng dấu gạch chéo chuyển tiếp, tôi hiểu rằng người dùng mong muốn có thể nhập tệp bằng dấu phân cách mặc định và xem đầu ra bằng dấu phân cách mặc định. (Ví dụ, một người dùng Windows sẽ nhập và mong đợi đầu ra là C:\Users\smith\Documents
và không phải là C:/Users/smith/Documents
), nhưng Perl làm gì trong nội bộ?
Tôi có thể, mặc dù nền tảng có thể sử dụng làm bộ phân cách thư mục hay không, chỉ cần sử dụng dấu gạch chéo ở phía trước khi tôi xử lý tệp trong nội bộ. Ví dụ: tôi có một thư mục $dir
và một tệp có tên là $file
và tôi muốn mở tệp. Tôi có thể chỉ cần nói $dir/file
hoặc tôi có phải sử dụng File::Spec
để đặt tên cho tôi không?
Thực tế, các chương trình Perl có yêu cầu dấu gạch chéo chuyển tiếp trong tên thư mục không? Tôi đang viết một mô-đun và sẽ cung cấp tên tệp cho chương trình gọi điện. Tôi có nên cung cấp tệp như /foo/bar/fubar
hoặc nếu hệ thống sử dụng dấu hai chấm như hệ điều hành Macintosh đầu tiên, giả sử :foo:bar:fubar
?
gì thì bạn sẽ được làm với những con đường? Nếu nó là để đọc và ghi vào các tập tin, sau đó '/' là tốt, và perl sẽ làm những gì bạn có ý nghĩa. Nếu bạn đang tạo các lệnh để được phân tích bằng trình bao lệnh của máy chủ hoặc các chương trình khác trên hệ thống đó, thì bạn sẽ cần phải tuân theo các quy tắc cho nền tảng đó và File :: Spec có thể giúp. –