Я унаследовал старое приложение на Perl, которое пытаюсь воскресить. К сожалению, я не Perl парень (и только начинающий разработчик). Я добился определенного успеха, исправляя другие проблемы с этим приложением, находя решения в Интернете, но решение этого вопроса до сих пор ускользало от меня, поэтому я чувствовал, что пришло время обратиться за советом.
Я наткнулся на контрольно-пропускной пункт и ищу совет о том, как устранить ошибку, которую я получаю.
Это ошибка:
Can't locate object method "new" via package "CGI" at
/opt/app/htdocs/lib/APP/CGI.pm line 26.Compilation failed
in require at /opt/app/htdocs/lib/APP/CGI.pm line 4.
Вот первые 26 строк /opt/app/htdocs/lib/APP/CGI.pm:
package APP::CGI;
use CGI;
use CGI::Carp qw(fatalsToBrowser set_message);
use APP::Error;
BEGIN {
sub handle_errors {
my $msg = shift;
&APP::Error::error($msg);
}
set_message(\&handle_errors);
}
use strict;
# hack: added these to resolve "can't locate" errors
use lib qw(/opt/app/htdocs);
use lib qw(/opt/app/htdocs/lib);
use lib qw(/opt/app/htdocs/lib/APP);
use lib qw(/opt/app/htdocs/lib/APP/Service);
# end hack
use vars qw/ $CGI %REDIRS /;
$CGI = new CGI();
Мне нужно было добавить следующее в другие скрипты в приложении, чтобы заставить вещи работать (чтобы решить не могу найти ошибки), поэтому я добавил их в этот скрипт, но это не решило проблему ,
use lib qw(/opt/app/htdocs);
use lib qw(/opt/app/htdocs/lib);
use lib qw(/opt/app/htdocs/lib/APP);
use lib qw(/opt/app/htdocs/lib/APP/Service);
Я предполагаю, что мое приложение не может найти модуль CGI (в коде указано «use CGI;»). Я подтвердил, что модуль CGI установлен и обновлен:
cpanm -i CGI
CGI is up to date. (4.40)
Версия Perl 5.26.2, если это имеет значение.
Какие-либо советы по устранению неполадок? Мне кажется, что этот файл CGI.pm не может найти модуль CGI, поэтому он не может выполнить метод "new" ... но это всего лишь предположение.