2013-12-13 14 views
11

Sto cercando di lanciare questo script:non può individuare DBI.pm

#!/usr/bin/perl 

use DBI; 

my $dbh = DBI->connect('dbi:Oracle:host=lonlin2;sid=TIMFX1AD;port=1524','xbsesdbo','xbsesdbo123') || die ($DBI::errstr . "\n"); 

my $query= "SELECT * FROM product_elements WHERE element_id = 1001"; 
my $queryHandler= $dbh->prepare($query); 

my $result= $queryHandler->execute(); 


open(fileHandler,"> note.txt"); 

print fileHandler "Risultato query: $result\n"; 

my $e= $dbh->disconnect(); 
close(fileHandler); 

Quando lancio questo script ricevo questo errore:

Can't locate DBI.pm in @INC (@INC contains: /opt/perl_32/lib/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.3 /opt/perl_32/lib/site_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.3 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/vendor_perl/5.8.3 /opt/perl_32/lib/vendor_perl .) at ./prova.pl line 3.

ho tutto installato! ! DBI.pm è installato !!

+3

Se avete installato, si sia installato utilizzando/per un diverso 'perl', o hai istruito Perl a installarlo in una directory non standard e non hai detto' perl' di cercare in quella directory. 1) Come l'hai installato? 2) Qual è il percorso completo per 'DBI.pm'? – ikegami

+0

Prova il comando 'perldoc -l DBI'. Se DBI.pm è installato e si trova nel percorso Incl di Perl, verrà visualizzata la posizione dell'installazione. Potrebbero esserci più Perls installati sul tuo sistema e potresti avere accesso a quello sbagliato. Come è la tua linea di shebang? Io uso '#!/usr/bin/env perl' per raccogliere la versione Perl utilizzata dal mio percorso e io uso [Perlbrew] (http://perlbrew.pl) per gestire più versioni Perl. –

+0

E in quale di quelle directory elencate nel messaggio di errore sopra è installato? – runrig

risposta

1

DBI non si trova nel percorso @INC, che indica a perl dove cercare i moduli personalizzati. Ciò è probabilmente dovuto al fatto che sono stati installati utilizzando lo strumento cpan come utente non root, che non avrà accesso in scrittura ai percorsi di inclusione predefiniti.

È necessario individuare DBI.pm e altri pacchetti e spostarli nel percorso @INC.

In alternativa, trovare i pacchetti che avete installato e aggiungere il percorso di installazione nel vostro percorso di libreria, per un uso di volta:

PERL5LIB=/path/to/modules perl yourscript.pl 

E per una soluzione più permanente, aggiungere questo al ~/.bashrc:

export PERL5LIB=/path/to/modules 
+0

Come posso trovare il percorso del pacchetto DBI? – chaw359

+0

@ chaw359 'find/-name 'DBI.pm' 2>/dev/null' lo farebbe su un sistema operativo simile a UNIX. –

+0

@ chaw359 - Come l'hai installato? – Quentin

4

Se non si dispone di perl attiva (e quindi non hanno ppm), è anche possibile ottenere DBI in questo modo:

perl -MCPAN -e 'install DBI' 

Potrebbe essere necessario installare i driver per Postgres come questo:

perl -MCPAN -e 'install DBD::Pg' 
14

Se si hanno radice, digitare console (Debian/Ubuntu):

sudo apt-get install libdbi-perl 
Problemi correlati