2012-02-14 96 views
2

我通过cpan安装了Perl模块HTML :: Template。 Perl本身识别模板模块,但是当我尝试作为一个Perl CGI脚本使用,它会触发下列错误:PERL Web开发:找不到Perl模块,但已安装

$ cat /var/log/httpd/error_log 

[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] Can't locate HTML/Template.pm in @INC (@INC contains: /root/perl5/lib/perjl5/ /usr/local/lib/perl5 /usr/$ 
[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at /var/www/cgi-bin/index.pl line 4. 
[Tue Feb 14 11:28:27 2012] [error] [client 127.0.0.1] Premature end of script headers: index.pl 

我的Perl脚本(index.pl)情况如下:

#!/usr/bin/perl -w 

use lib "/root/perl5/lib/perjl5"; # is it the correct way to include libs? 
use HTML::Template; # error line 


print "Content-type: text/html\r\n\r\n"; 
print "Hello there!<br />\nJust testing .<br />\n"; 

for ($i=0; $i<10; $i++) 
{ 
print $i."<br />"; 
} 

如果我加载脚本http://localhost/cgi-bin/index.pl它会重新调用500内部服务器错误。

将模块安装和位于:/root/perl5/lib/perl5/HTML/Template.pm

逸岸$的perldoc perllocal回报:

[...] 
    [1mMon Feb 13 16:43:34 2012: "Module" HTML::Template[0m 
     · "installed into: /root/perl5/lib/perl5" 

     · "LINKTYPE: dynamic" 

     · "VERSION: 2.6" 

     · "EXE_FILES: " 

[...] 

它是正确installe? 如果键入: $ perl的-e “使用HTML ::模板”没有错误返回

Im'using的Fedora 16

Linux version 3.2.5-3.fc16.i686 ([email protected]) (gcc version 4.6.2 20111027 (Red Hat 4.6.2-1) (GCC)) #1 SMP Thu Feb 9 02:24:08 UTC 2012

感谢您的帮助。

回答

4

您的use lib行有额外的j

use lib "/root/perl5/lib/perjl5"; 
#       ^

这样的路径不匹配你以后说的话(“模块已安装并位于:/root/perl5/lib/perl5/HTML/Template.pm”)。

诊断的方法是从错误信息/root/perl5/lib/perjl5复制并粘贴目录,然后附加模块的文件名HTML/Template.pm/root/perl5/lib/perjl5/HTML/Template.pm,然后在那里查看文件是否存在。

然后您会看到该文件不存在,然后可以继续确定目录名称中存在拼写错误。另外,如果您要维护自己的(CPAN)库,而不是将use lib ...放入所有源文件中,则可能需要考虑使用另一种获取perl的机制来使用库,例如​​设置PERL5LIB环境变量(您可以从shell的启动文件(例如〜/ .bash_profile)中设置),或使用perl -I...

此外,如果您想使用CPAN,您可能需要查看local::lib模块。使用local :: lib的一个便利方法是安装您的发行版的local :: lib(例如在Debian/Ubuntu下,apt-get install liblocal-lib-perl),然后使用它来设置您自己的私有CPAN库。 (你可以从CPAN引导本地:: lib,但使用distro包可以更容易地完成它。)

0

我遇到了同样的问题,我发现它是由perl的路径引起的。你需要检查你的Perl路径:


which perl 

确保把它放在第一行! 例如,我在终端上安装了HTML:Template,我的Mac上使用了:/opt/local/bin/perl。该脚本应与:


#!/opt/local/bin/perl -wT