2011-01-17 6 views
9

मैं जब मेरे पर्ल कोड चल रहा यह त्रुटि प्राप्तफ़ाइल पता नहीं लगा सकता/@INC में Glob.pm (@INC शामिल हैं: डी:।/उपकरण/lib) directory.pl लाइन पर 2

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

line 2: @files=<*>;

जब मैं आदेश चला, मैं मिलता है,

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

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

तो मुझे लगता है कि फ़ाइल :: ग्लोब मॉड्यूल स्थापित है?

+4

यह इंस्टॉल है, ठीक है। आपका '@ आईएनसी' इस पर इंगित नहीं करता है, हालांकि। –

+0

धन्यवाद, किसी भी तरह मैंने सोचा कि यह विकास के तहत सब-पाथ खोज करने के लिए कैसे पता होगा:/उपकरण/lib – freshWoWer

+3

क्यों perldoc इसे खोजने अगर यह @INC – justintime

उत्तर

16

@INC पर्ल की स्थापना पर सही ढंग से सेट किया जाना चाहिए। जब यह आपकी कॉन्फ़िगरेशन से मेल नहीं खाता है, तो आप कुछ गड़बड़ कर रहे हैं।

  1. वातावरण चर PERL5LIB को D:\tools\lib\perl\510\ जोड़ें (या PERLLIB अगर यह काम नहीं करता है)
  2. :

    हालांकि, अगर @INC के वर्तमान मूल्य को अपनी आवश्यकताओं फिट नहीं करता है, आप विभिन्न विकल्प हैं

  3. स्टार्टअप पर @INC निर्दिष्ट करें: इसके बजाय use libname लिखने की perl -I D:\tools\lib\perl\510\
  4. , आप लिख सकते हैं use path/to/libname
  5. use बयान से पहले एक BEGIN ब्लॉक का उपयोग करना:

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

भी देखें http://perldoc.perl.org/perlvar.html एक संक्षिप्त परिचय के लिए।

+0

में पहला सुझाव का उपयोग कर हल नहीं होती है करता है, और इतने सारे विकल्प प्रदान करने के लिए धन्यवाद! "एक से अधिक तरीके यह करने के लिए नहीं है" - मुझे लगता है कि :) – freshWoWer

+0

मुझे लगता है, आप ', Windows के तहत पर्ल कोड में स्लैश का उपयोग करने से बचना चाहिए इन' "\ t" के बाद से, '" \ 510 "' आदि विस्तार किया जा सकता कुछ अजीब पात्रों के लिए। बैकस्लाश का उपयोग करना अधिक उपयुक्त होगा, मुझे लगता है। –

संबंधित मुद्दे