Я пытаюсь организовать несколько сценариев perl таким образом, чтобы я мог повторно использовать некоторые функции между ними.Директива require требует, однако, не работает, когда скрипт запускается как CGI под Apache.Я пробовал это:
require "common.pl"
, но это не работает под Apache.
Я также пробовал это:
use File::Basename;
use Cwd qw(abs_path);
require abs_path(dirname($0))."/common.pl";
, который работает как нав командной строке и под Apache на моем локальном сервере, но не на сервере моего веб-хоста.
Знаете ли вы, как правильно «требовать» сценарий perl, чтобы он работал как в командной строке, так и под Apache?
Редактировать : Я ищу способ (необязательно использующий 'require') сделать функции, определенные в 'common.pl', доступными для скрипта, вызывающего это здесь.Таким образом, в основном у меня есть 2 скрипта 'foo.pl' и 'bar.pl', из которых я хотел бы повторно использовать функции, написанные в 'common.pl'.Как правильно сделать это в Perl?'require' отлично работает в командной строке, но не в Apache ... У меня нет контроля над% INC, и я не могу жестко закодировать полный путь к 'common.pl'.
I can '• жестко закодируйте путь к «common.pl», поскольку этот набор сценариев должен выполняться на 3 разных серверах, каждый из которых имеет свой абсолютный путь.
Edit2 : сообщение об ошибке Iчто происходит при запуске с использованием mod_perl (я ошибочно заявлял, что все это происходило при работе под Apache / cgi, но у меня был mod_perl на одной из 3 установок, на двух других установках скрипты выполнялись как обычные скрипты cgi, ибыло связано с оператором 'require', который работает нормально при обычном cgi).Ошибка выглядит следующим образом:
Can't locate common.pl in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 . /usr) at /.../check.pl