我对perl和apache相当新,而且我的代码似乎遇到了一个小问题。
我有3个文件:
hw.pm
package hw;
sub calc {
my $num1 = shift;
my $num2 = shift;
return $num1 + $num2;
}
1;
startup.pl
use lib qw(path to where hw.pm is located);
1;
hel.pl
#!/usr/bin/perl -w
use hw;
use CGI qw(:standard);
print header;
my $ans = calc(5,4);
print $ans;
重启apache没问题但是当我从浏览器访问hel.pl时出现错误Can't locate hw.pm in @INC
startup.pl是否已将其包含在@INC
中?或者我错过了什么?
我使用的是perl v5.10.1和Apache2 v2.2.16
答案 0 :(得分:0)
Perl没有找到hw.pm
。
尝试从startup.pl
复制此行use lib qw(path to where hw.pm is located);
到hel.pl,替换那里的“use hw;
”。但首先要确保路径正确。
@INC - 数组@INC包含列表 寻找Perl脚本的地方 由EXPR评估,要求 ,或使用构造。最初 由任何-I的参数组成 命令行开关,后跟 可能是默认的Perl库 “/ usr / local / lib / perl”,然后是 “。”,代表当前 。目录
答案 1 :(得分:0)
我设法解决了这个问题。最初我在apache2.conf中有这个:
PerlRequire startup.pl
但添加此代码后:
<Directory /var/www>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
我能够从hel.pl
访问我的模块谢谢你的帮助。