linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2911字,纯文字阅读大概需要5分钟。
内容图文
#!/usr/bin/perl 2 use DBI; #perl引入DBI模块 3 my $dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd); #DBI根据输入的驱动程序对象的句柄调用对应的数据模块,返回一个数据库对象的句柄
这个时候我的脑海里出现了两个问题
1.代码中使用use,那use怎么知道DBI所在的目录,在哪里设置了,和@INC有什么关系???
2.DBI如何激活DBD::Oracle,寻找的路径是什么,在哪里,怎么设置,和@INC有什么关系???
上述问题可能会在配置DBD::Oracle中找到答案,所以我就先查询学习了配置过程
配置方法DBD::Oracle
参考:Linux环境配置DBD::Oracle模块
要点
1. DBD::Oracle模块不是Oracle官方开发的,由Pythian Group公司开发,网址为https://metacpan.org/pod/DBD::Oracle,下载该模块的地址https://metacpan.org/release/MJEVANS/DBD-Oracle-1.75_2 。当然可以去CPAN(Comprehensive Perl Archive Network,Perl模块聚集库https://www.cpan.org/)下载
2. 先装DBI,再装DBD模块,在安装DBD::Oracle中,如果装在没有Oracle Database的主机上,则需要安装Oracle Instant Client来进行远程数据库连接
3.在安装教程中,指出要配置Orcale_HOME目录,我们可以在根目录下输入vi .bashrc命令,即可看到Oracle_HOME的配置信息
在安装DBD::Oracle过程中,设置Oracle_HOME变量这一步似乎与我的问题2有关,但和问题1一点关系都没有,这时候就怀疑perl中有设置相应的参数,仔细查看执行脚本的开头,发现有使用到FindBin,想着不了解那就去学习一下。幸运的是,在学习的过程中解决了我的疑惑和报错。
perl的FindBin模块(一定要看参考的网址,很有帮助)
要点1:
参考:Perl使用FindBin模块解决脚本中的路径问题
假定脚本路径在/home/as_user/PMS/testt.pl,在目录/home/as_user/PMS下运行该脚本
即$bin表示路径/home/as_user/PMS,$Script表示testt.pl
要点2:
参考:理解use_require_do使用方法
use 是在默认的@INC里面去寻找对应的模块,一旦模块不在@INC中,那么use是不能引入的。同时use引入的名称不需要后缀名,默认同时也只能找.PM文件
要点3:
参考:查看Perl模块安装路径
@INC是perl的一个特殊列表标量,存储着当前版本的Perl模块的路径。编译脚本时,Perl会根据@INC存储的路径去查询用户所调用的模块,可以用命令‘perl -V’来查看具体模块的目录,也同样可以用BEGIN代码块对@INC进行操作。其中.表示脚本的当前目录。
总结
在学习了‘配置DBD::Oracle方法’ 以及‘perl的FindBin模块’的相关知识后,再回到报错,报错说在@INC路径下Can‘t locate DBD/Oracle.pm,既然找不到,那么我们要在执行脚本中设置DBD/Oracle.pm的路径。设置的方法是使用 FindBin模块。
举个例子:执行脚本SolexaDown.pl的目录为 /home/as_user/PMS/Data-Update,在这个目录下的/lib目录下存在 DBD/Oracle.pm,即存在路径 /home/as_user/PMS/Data-Update/DBD/Oracle.pm。那么我在olexaDown.pl脚本的开头,应该写上
use FindBin ‘$Bin‘; use lib "$Bin/lib";
这样一来,perl执行SolexaDown.pl脚本时就能找到DBD/Oracle.pm了。问题解决了~~
linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法
标签:target 记录 linux环境配置 archive 句柄 free 问题解决 应该 bin
本文系统来源:http://www.cnblogs.com/achigwwblog/p/7853814.html
内容总结
以上是互联网集市为您收集整理的linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法全部内容,希望文章能够帮你解决linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBDOracle.pm in @INC 的解决办法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。