Perl从其lib
目录下的目录加载共享对象。在某些Perl安装中,这将是与找到主Perl二进制文件的bin
目录平行的lib
目录。在某些系统中,它将位于其他位置。例如,我自己构建的Perl(MacOS X上的5.14.1)显示以下内容(从perl -V
的输出的一部分):
@INC
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1
另一方面,系统中的 Perl (5.12.3) 报告如下:
@INC:
/Library/Perl/5.12/darwin-thread-multi-2level
/Library/Perl/5.12
/Network/Library/Perl/5.12/darwin-thread-multi-2level
/Network/Library/Perl/5.12
/Library/Perl/Updates/5.12.3
/System/Library/Perl/5.12/darwin-thread-multi-2level
/System/Library/Perl/5.12
/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.12
在MacOS X上共享对象的扩展名为.bundle
(而不是.so
),我拥有的一些捆绑包如下:
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/Informix/Informix.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/SQLite/SQLite.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBI/DBI.bundle
对应的 PM 文件为:
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/Informix.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/SQLite.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBI.pm
无论如何,Perl都会期望在与模块名称相关的目录中查找
.so
文件。应该有安装说明,尤其是您已经付费购买了该模块。至少会有一个共享对象和一个
.pm
文件需要安装,在两个相关的目录中。