我的开发服务器上有一个Perl应用程序,我想在我的本地机器上复制(mac osx)。我不是一个perl程序员(我是PHP / Rails开发人员),这个应用程序的开发人员已经不在了,所以我无法联系他寻求帮助。我已经非常接近让它上班了。我能够使用CPAN安装所有软件包(至少我认为我得到了所有软件包)但是我一直遇到以下错误:
Can't locate WebCNP/Config.pm in @INC (
@INC contains: /Library/Perl/5.16/darwin-thread-multi-2level
/Library/Perl/5.16
/Network/Library/Perl/5.16/darwin-thread-multi-2level
/Network/Library/Perl/5.16
/Library/Perl/Updates/5.16.2/darwin-thread-multi-2level
/Library/Perl/Updates/5.16.2
/System/Library/Perl/5.16/darwin-thread-multi-2level
/System/Library/Perl/5.16
/System/Library/Perl/Extras/5.16/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.16 .
)
at webcnp_lib.pl line 30.
在服务器上,应用程序的文件结构如下所示:
/var/www/cgi-bin (empty dir)
/var/www/conf
/var/www/error
/var/www/html (empty dir)
/var/www/icons
/var/www/perl (the config file is located in this directory)
- /WebCNP/Config.pm
/var/www/ssi (all the .pl files for the app are located here, including all the JS and CSS files)
/var/www/ssi/webcnp_lib.pl
的第30行包含以下内容:
use WebCNP::Config;
任何想法我可能做错了什么?
您知道我已经将应用程序的文件结构从我的开发服务器复制到我的本地计算机并创建了一个虚拟主机,以便它指向应用程序的根目录(/ var / www )。
感谢先进的任何见解!
答案 0 :(得分:2)
能够使用符号链接修复此问题
ln -s /path/to/my/app/WebCNP /Library/Perl/5.16/WebCNP
我认为这不是CPAN的模块。
我会有点犹豫使用符号链接。这可以工作,但你基本上是在你自己控制的文件中链接到MacOS X上的主/Library
目录。你删除你的文件,那个链接不会指向任何东西。
您可以使用use lib
将包含模块的目录添加到@INC
目录:
use lib qw(/path/to/my/app);
现在将包含此模块搜索路径。
如果您更愿意安装模块本身,为什么不简单地将其复制到/Lbrary/Perl/5.16
本身?这是cpan
会做的事情。至少这样,你的Perl模块目录不依赖于可以删除的链接。
答案 1 :(得分:1)
/var/www/perl
中不存在 @INC
,因此Perl不会在那里看到。为CGI脚本解决此问题的最常用方法是将以下内容添加到脚本中(但不是模块):
use FindBin qw( $RealBin );
use lib "$RealBin/../perl";
答案 2 :(得分:0)
我能够通过符号链接来解决这个问题
ln -s /path/to/my/app/WebCNP /Library/Perl/5.16/WebCNP
不确定这是否是最优雅的方法,但似乎适用于此应用。谢谢各位的回应!这非常有见地。
答案 3 :(得分:0)
老帖子,我知道,但有一种更便携的方式。安装模块时,需要做两件事。
毋庸置疑,您需要确保Makefile.PL已正确写入。