2011-01-17 23 views
9

tôi nhận được lỗi này khi chạy mã perl tôiKhông thể xác định vị trí File/Glob.pm trong @ INC (@ INC chứa: D:./Tools/lib) tại dòng directory.pl 2

Can't locate File/Glob.pm in @INC (@INC contains: D:/tools/lib .) at directory.pl line 2.

line 2: @files=<*>;

Khi tôi chạy lệnh, tôi nhận được,

Y:\perl\perl>perldoc -l File::Glob

D:\tools\lib\perl\510\File\Glob.pm

Vì vậy, tôi nghĩ rằng mô-đun Tệp :: Glob được cài đặt?

+4

Cài đặt, được rồi. Tuy nhiên, '@ INC' của bạn không trỏ đến nó. –

+0

Cảm ơn, bằng cách nào đó tôi nghĩ rằng nó sẽ biết làm thế nào để tìm kiếm subpath dưới D:/tools/lib – freshWoWer

+3

Tại sao perldoc tìm thấy nó nếu nó không phải trong @INC – justintime

Trả lời

16

@INC phải được đặt chính xác khi cài đặt Perl. Khi nó không phù hợp với cấu hình của bạn, bạn dường như đã làm rối tung điều gì đó.

Tuy nhiên, nếu giá trị hiện tại của @INC không phù hợp với nhu cầu của bạn, bạn có các tùy chọn khác nhau:

  1. Thêm D:\tools\lib\perl\510\ vào biến môi trường PERL5LIB (hoặc PERLLIB nếu điều này không làm việc)
  2. Chỉ định @INC khi khởi động: perl -I D:\tools\lib\perl\510\
  3. Thay vì viết use libname, bạn có thể viết use path/to/libname
  4. Sử dụng một khối BEGIN trước use báo cáo:

    BEGIN { 
        push @INC,"D:\tools\lib\perl\510\"; 
    } 
    

Xem thêm http://perldoc.perl.org/perlvar.html cho một giới thiệu ngắn.

+0

giải quyết bằng cách sử dụng đề nghị đầu tiên; và cảm ơn bạn đã cung cấp nhiều giải pháp thay thế! "Có nhiều cách để làm điều đó" - tôi đoán :) – freshWoWer

+0

Tôi đoán, bạn nên tránh sử dụng dấu gạch chéo trong mã Perl trong Windows, vì các '" \ t "', '" \ 510 "' vv có thể được mở rộng với một số nhân vật kỳ lạ. Sử dụng dấu gạch chéo ngược sẽ phù hợp hơn, tôi đoán vậy. –

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