我是一个学习perl的新人,并且正在努力工作.我真的陷入了困境,在过去的4小时里一直没有任何结果.
我在目录中使用了一堆自定义模块,然后我获得了实现新知识库的票证,因此我在Moduledirectory中添加了一个新模块.添加后,当我尝试访问MyModule时,它根本不起作用.我明白了
Can't locate FolderName/MyModuleName.pm in @INC
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗.这真的很烦人.我试图重启apache服务器,但仍然出现相同的错误.
我也尝试编译我的模块,但是我得到了相同的错误,除了模块的名称不同,它是我在MyModule中调用/使用的那个.
如果你能帮助我,请告诉我.提前致谢.
编辑:添加更多详细信息,我得到的确切错误(可读性换行符)是:
Can't locate Net2Net/KnowledgeBase.pm in @INC (@INC contains:
(DOCUMENT_ROOT)/bin
/usr/local/lib/perl5/5.8.8/sun4-solaris
/usr/local/lib/perl5/5.8.8
/usr/local/lib/perl5/site_perl/5.8.8/sun4-solaris
/usr/local/lib/perl5/site_perl/5.8.8
/usr/local/lib/perl5/site_perl
.
) at /data1/web/intradev.com-80/docs/gss/kb/ajax-kb-update.cgi line 6.
BEGIN failed--compilation aborted at /data1/web/intradev.com-80/docs/gss/kb/ajax-kb-update.cgi line 6.
Run Code Online (Sandbox Code Playgroud)
错误消息说明了一切......
您的自定义模块安装在哪里?
Perl使用一个名为@INC跟踪目录的数组来搜索Perl模块.如果您在perl -V命令行输入,您将看到默认目录列表的位置@INC.您可以将模块放在@INC列表中的一个目录中.您还可以添加目录@INC与使用LIB; 附注.这需要在您的Perl源代码中.
大多数@INC列表都包含当前目录,因此您通常可以在其中粘贴模块.但是,在Apache或perl_mod中作为CGI脚本运行?最好的办法是使用Cwd; 模块,查看当前目录是什么.CGI可能会删除某些环境变量作为安全措施.
还有一件事.如果是Perl模块Foo::Bar,则模块位于目录列表Foo/Bar.pm下的某个目录下@INC.如果是Foo::Bar::Foom,那就是参考模块Foo/Bar/Foom.pm.有些人只是复制没有目录的模块.
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |