找不到DBI.pm

cha*_*359 20 perl perl-module

我正在尝试启动此脚本:

#!/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);
Run Code Online (Sandbox Code Playgroud)

当我启动此脚本时,我收到此错误:

无法在@INC中找到DBI.pm(@INC包含:/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第3行.

我已经安装好!! DBI.pm安装!!

Mic*_*u93 33

如果你有root,请键入console(Debian/Ubuntu):

sudo apt-get install libdbi-perl
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您没有活动的perl(因此没有ppm),则也可以像这样获得DBI:

perl -MCPAN -e 'install DBI'
Run Code Online (Sandbox Code Playgroud)

您可能需要像这样安装Postgres驱动程序:

perl -MCPAN -e 'install DBD::Pg'
Run Code Online (Sandbox Code Playgroud)


Ank*_*wal 6

对于 redhat/centos 用户:

sudo yum -y install perl-DBI
Run Code Online (Sandbox Code Playgroud)


Gli*_*ire 3

DBI 不在您的@INC路径中,它告诉 perl 在哪里寻找自定义模块。这可能是因为您以非 root 用户身份使用该工具安装了它们cpan,该用户没有对默认包含路径的写访问权限。

您将需要找到DBI.pm其他包,并将它们移到您的@INC路径中。

或者,找到您已安装的软件包并将安装路径添加到您的库路径中,以供一次性使用:

PERL5LIB=/path/to/modules perl yourscript.pl
Run Code Online (Sandbox Code Playgroud)

为了获得更永久的解决方案,请将其添加到~/.bashrc

export PERL5LIB=/path/to/modules
Run Code Online (Sandbox Code Playgroud)