2011-01-17 14 views
9

ottengo questo errore quando si esegue il mio codice Perlnon può individuare File/Glob.pm in @ INC (@INC contiene: D:./Tools/lib) alla linea directory.pl 2

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

line 2: @files=<*>;

quando ho eseguito l'ordine, ottengo,

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

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

Quindi penso che il modulo File :: Glob sia installato?

+4

È installato, va bene. Il tuo '@ INC' non punta a questo, però. –

+0

Grazie, in qualche modo ho pensato che sapesse come cercare nel sottotesto sotto D:/tools/lib – freshWoWer

+3

Perché perldoc lo trova se non è in @INC – justintime

risposta

16

@INC devono essere impostati correttamente dopo l'installazione di Perl. Quando non corrisponde alla tua configurazione, sembra che tu abbia incasinato qualcosa.

Tuttavia, se il valore corrente di @INC non si adatta alle tue esigenze, sono disponibili diverse opzioni:

  1. Aggiungi D:\tools\lib\perl\510\ alla variabile di ambiente PERL5LIB (o PERLLIB se questo non funziona)
  2. Specificare @INC all'avvio: perl -I D:\tools\lib\perl\510\
  3. Invece di scrivere use libname, è possibile scrivere use path/to/libname
  4. utilizzo di un blocco BEGIN prima che i use dichiarazioni:

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

Vedere anche http://perldoc.perl.org/perlvar.html per una breve introduzione.

+0

risolto usando il primo suggerimento; e grazie per aver fornito così tante alternative! "C'è più di un modo per farlo" - immagino :) – freshWoWer

+0

Immagino, dovresti astenermi dall'usare le barre nel codice Perl sotto Windows, dal momento che questi "" \ t "', "" \ 510 "' etc possono essere espansi ad alcuni personaggi strani. Usare i backslash sarebbe più appropriato, immagino. –

Problemi correlati