2010-01-07 34 views
9

Làm cách nào để tìm tên của tệp là require 'd, từ trong tệp đó? Tôi có thể xem xét %INC để tìm tên của tất cả các tệp đã được tải, nhưng tôi đang tìm kiếm một cái gì đó như $0 sẽ đóng vai trò là chìa khóa thành %INC.Làm cách nào để tìm ra tên tệp của tệp được yêu cầu trong Perl?

+0

tôi tò mò tại sao bạn muốn làm điều đó. Tôi đã cố gắng để nghĩ ra một trường hợp sử dụng khác hơn là tìm ra nơi tập tin được, hoặc sử dụng nó trong một lớp học được tạo động hoặc tương tự. –

+0

Tệp là tệp cấu hình được yêu cầu từ một chương trình và tôi muốn tệp cấu hình để kéo trong các tệp cấu hình khác nằm trong cùng một thư mục. Bạn nói đúng, trong chương trình Perl bình thường, bạn có thể không cần điều này. –

+0

Bạn có tệp cấu hình nằm rải rác ở các vị trí khác nhau không? Tại sao không 'sử dụng lib"/my/conf/dir "' và tránh chicanery? –

Trả lời

9

một đơn giản

my $filename=__FILE__; 
print __FILE__; 

nên làm ..

cũng tìm here (does-a-perl-module-know-where-it-is-installed)here (perldoc on Special-Literals) để biết thêm ý tưởng

+0

Cảm ơn, đó là nó. Thật kỳ lạ, bạn không thể làm $ INC {__ FILE__} vì điều đó có vẻ $ INC {'__ FILE__'}, vì vậy bạn cần phải trải qua một biến trung gian. –

+1

Peter: Điều đó không hoàn toàn bất ngờ. $ foo {bar} autoquotes, quá. __FILE__ trông giống như bất kỳ số nhận dạng nào khác. Các vấn đề tương tự áp dụng cho các hằng số. – tsee

+3

@Peter Eisentraut: Nếu bạn cần sử dụng '__FILE__' trong một băm, sử dụng' $ INC {'' .__ FILE __} '. Một chút gõ nhiều hơn, nhưng nó được bạn ở đó. Tất cả những gì bạn cần là một từ không phải từ. – Axeman

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