2013-12-13 27 views
11

Ich versuche, dieses Skript zu starten:kann nicht gefunden werden 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); 

Wenn ich dieses Skript starten erhalte ich diesen Fehler:

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.

Ich habe alle installiert habe! ! DBI.pm ist installiert !!

+3

Wenn Sie es installiert ist, entweder installiert es mit/für ein anderes Perl, oder Sie haben Perl angewiesen, es in ein nicht standardmäßiges Verzeichnis zu installieren, und Sie haben 'perl' nicht befohlen, in dieses Verzeichnis zu schauen. 1) Wie hast du es installiert? 2) Wie lautet der vollständige Pfad zu 'DBI.pm'? – ikegami

+0

Probieren Sie den Befehl 'perldoc -l DBI'. Wenn DBI.pm installiert ist und sich im Include-Pfad von Perl befindet, sehen Sie den Speicherort der Installation. Es könnten mehrere Perls auf Ihrem System installiert sein und Sie könnten auf das falsche zugreifen. Wie ist deine Shebang-Linie? Ich benutze '#!/usr/bin/env perl', um die Perl-Version, die mein Pfad verwendet, abzurufen, und ich benutze [Perlbrew] (http://perlbrew.pl), um mehrere Perl-Versionen zu verarbeiten. –

+0

Und in welchem ​​dieser Verzeichnisse in der Fehlermeldung oben ist es installiert? – runrig

Antwort

1

DBI ist nicht in Ihrem @INC Pfad, der Perl sagt, wo nach benutzerdefinierten Modulen gesucht werden soll. Dies liegt wahrscheinlich daran, dass Sie sie mit dem Tool cpan als Nicht-Root-Benutzer installiert haben, der keinen Schreibzugriff auf die Standard-Include-Pfade hat.

Sie müssen DBI.pm und andere Pakete suchen und sie in Ihren @INC Pfad verschieben.

Alternativ finden Sie die Pakete, die Sie installiert haben und den Weg in die Bibliothek Installationspfad hinzufügen, für den einmaligen Gebrauch:

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

Und für eine dauerhaftere Lösung, fügen Sie diese ~/.bashrc:

export PERL5LIB=/path/to/modules 
+0

Wie kann ich den Pfad des DBI-Pakets finden? – chaw359

+0

@ chaw359 'finde/-name 'DBI.pm' 2>/dev/null' würde es unter einem UNIX-ähnlichen Betriebssystem tun. –

+0

@ chaw359 - Wie haben Sie es installiert? – Quentin

4

Wenn Sie nicht aktiv perl (und daher nicht ppm haben), können Sie auch DBI wie diese:

perl -MCPAN -e 'install DBI' 

Möglicherweise müssen Sie Treiber für Postgres wie diese installieren:

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

Wenn Sie root haben, geben Sie in der Konsole (Debian/Ubuntu):

sudo apt-get install libdbi-perl 
Verwandte Themen