У меня есть базовый скрипт Perl, который запускает код из модуля. После перехода на новый компьютер я больше не могу запускать этот скрипт. Дерево каталогов устанавливается следующим образом:Не удается найти пользовательский модуль в @INC
SatanicBot
src
SatanicBot
Bot.pm
Utils.pm
run.pl <-- The script that uses the module
Операторы используют в run.pl, как так:
use warnings;
use strict;
use diagnostics;
use Bot::BasicBot;
use Cwd qw(abs_path);
use FindBin;
use lib abs_path("$FindBin::Bin/SatanicBot");
# Without this, I get an error that is essentially caused by it not being to find the module.
use SatanicBot::Bot;
Когда я бегу run.pl, я получаю следующее сообщение об ошибке:
Can't locate SatanicBot/Bot.pm in @INC (you may need to install the SatanicBot::Bot module) (@INC contains: /Users/elifoster/Desktop/Dev/SatanicBot/src/SatanicBot /Users/elifoster/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0/darwin-2level /Users/elifoster/perl5/perlbrew/perls/perl-5.22.0/lib/site_perl/5.22.0 /Users/elifoster/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0/darwin-2level /Users/elifoster/perl5/perlbrew/perls/perl-5.22.0/lib/5.22.0 .) at src/run.pl line 12.
Как вы можете видеть, в нем указано, что @INC содержит каталог, в котором находится модуль SatanicBot :: Bot, но он не может его найти. Я серьезно в шоке.
Что такое '$ FindBin :: Bin/SatanicBot'? Вероятно, это не то же самое, что '$ FindBin :: Bin/src/SatanicBot' – optional
Это должно быть ссылка на нужное место, так как run.pl уже находится в каталоге src. Второй означает, что Bot.pm находится в SatanicBot/src/src/SatanicBot. По крайней мере, так оно и есть. –
Совет: 'lib' является обычным именем для каталога, содержащего модули, а не' src'. ('bin' для скриптов) – ikegami