重启Apache后功能不可用

时间:2011-02-28 02:27:30

标签: perl path perl-module

我对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

2 个答案:

答案 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

访问我的模块

谢谢你的帮助。