求@INC问题

求@INC问题

由于权限问题,不能安装perl模块,只能通过下载模块后,然后perl Makefile.PL  make后将生成的pm模块文件放在用户主目录下的lib文件夹下(假设主目录为/home/aaa),然后对于那些要用到lib目录下包的perl文件,在每个perl文件里通过BEGIN将/home/aaa/lib 添加到@INC里面。
  
    我想问的是如何添加用户自定的模块目录到@INC中呢。望高手赐教!
在perl文件前面写 use lib '绝对路径名' 就可以了。

ps: 你自己说得不是很清楚了吗?


QUOTE:
原帖由 odacharlee 于 2008-12-16 13:18 发表
在perl文件前面写 use lib '绝对路径名' 就可以了。

ps: 你自己说得不是很清楚了吗?

大多数是解决问题了的,但是有些是不能解决问题的,拿Boost::Graph这个包来说,它在/home/aaa/lib目录下的结构是这样的。如下(希望能看懂)
------------------------------------------------
lib/
    Boost/
             Graph.pm
             Graph/
                       Directed.pm
                       Undirected.pm
----------------------------------------------------------------------------
其中在Graph.pm的前己行如下:
package Boost::Graph;
our $VERSION = '1.4';
#####################################################################################

# Graph.pm

# David Burdick, 11/08/2004

#

# The main module for the Perl Boost interface

#####################################################################################

use strict;
use Boost::Graph::Directed;
use Boost::Graph::Undirected;

虽然我在用自己的程序中能找到Boost::Graph这个包,但Boost::Graph这个在

[Copy to clipboard] [ - ]
CODE:
use Boost::Graph::Directed

就会出现错误:
错误代码如下:

[Copy to clipboard] [ - ]
CODE:
Can't locate loadable object for module Boost::Graph::Directed in @INC

所以要提上面的问题,清赐教
use lib '/home/aaa/lib';

应该就没问题的,如果出问题了,找找原因


QUOTE:
原帖由 cobrawgl 于 2008-12-16 13:36 发表
use lib '/home/aaa/lib';

应该就没问题的,如果出问题了,找找原因

还是有问题,继续寻找答案,
要不把你的 code 贴出来瞅瞅


QUOTE:
原帖由 odacharlee 于 2008-12-16 13:18 发表
在perl文件前面写 use lib '绝对路径名' 就可以了。


bad idea


QUOTE:
原帖由 riverlee2008 于 2008-12-16 13:06 发表
由于权限问题,不能安装perl模块,只能通过下载模块后,然后perl Makefile.PL  make后将生成的pm模块文件放在用户主目录下的lib文件夹下(假设主目录为/home/aaa),然后对于那些要用到lib目录下包的perl文件, ...

你可以看下 perlrun 的 ENVIRONMENT 部分,那里有些环境变量专门针对你的这种情况。


[Copy to clipboard] [ - ]
CODE:
BEGIN {
   unshift @INC,"your_lib_path";
}