функция недоступна после перезапуска Apache - PullRequest
0 голосов
/ 28 февраля 2011

Я довольно новичок в 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 голосов
/ 01 марта 2011

Мне удалось это решить.Первоначально у меня было это в моем apache2.conf:

PerlRequire startup.pl

, но после добавления этого кода:

<Directory /var/www> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI </Directory>

я смогполучить доступ к моим модулям из hel.pl

Спасибо, ребята, за вашу помощь.

0 голосов
/ 28 февраля 2011

Perl не находит hw.pm.

Попробуйте скопировать эту строку из файла startup.pl

use lib qw(path to where hw.pm is located);

в hel.pl, заменив там "use hw;".Но сначала убедитесь, что путь указан правильно.


@ INC - Массив @INC содержит список мест, в которых нужно искать сценарии Perl, которые будут оцениваться командой doEXPR, требуют или используют конструкции.Первоначально он состоит из аргументов любых ключей командной строки -I, за которыми следует библиотека Perl по умолчанию, вероятно, "/ usr / local / lib / perl", за которой следует ".", Для представления текущего каталога.

...