Я думаю, вы слегка смущены. @INC
содержит список каталогов , где Perl будет искать модули. Вы не увидите названия отдельных модулей при печати содержимого @INC
. Фактические модули будут установлены в каталогах, перечисленных в ваших выходных данных.
Если вы хотите увидеть, где был установлен модуль, вы можете использовать perldoc -lm
.
$ perldoc -lm Template
/usr/lib64/perl5/vendor_perl/Template.pm
$ perldoc -lm Time::Piece
/usr/lib64/perl5/Time/Piece.pm
Обновление: Вы можете получить полный список модулей, установленных в различных каталогах @INC
, выполнив команду, подобную этой:
$ perl -MFile::Find -E'find sub { say $File::Find::name if -f and /\.pm$/ }, @INC'
Обновление: Изменено perldoc -l
на (лучше) perldoc -lm
.
Обновление: Если существуют различия между списками модулей, которые видят пользователи и root, то наиболее очевидной проблемой является то, чтодва типа пользователей работают с разными версиями Perl. Попробуйте запустить which perl
в качестве пользователя обоих типов и добавьте вывод к своему вопросу.
Другое обновление: Хорошо, глядя на пути, добавленные в вопрос, похоже,Есть несколько версий Perl. В /usr/bin/
есть системный Perl, в /bin/
есть еще один Perl, и похоже, что в /lustre/bio/perl5/bin
есть по крайней мере еще один. Вполне может быть и другое.
Каждая установка Perl будет иметь свою собственную библиотеку модулей. И это действительно не очень хорошая идея использовать библиотеку модулей одной установки Perl с другой установкой Perl. Даже если это одна и та же версия Perl, они могли бы быть построены с разными флагами компилятора, которые влияли бы на то, насколько хорошо будут работать скомпилированные модули.
Когда вы устанавливаете модуль Perl из CPAN, он устанавливает его вбиблиотека модулей, связанная с установкой Perl, которую вы используете в данный момент. Похоже, ваш пользователь root устанавливал модули в каталоги библиотек, связанных с системой Perl.
Так что вам нужно выбрать установку Perl, которую вы хотите использовать. Кажется вероятным, что вы хотите использовать системный Perl, так как это тот, который использует пользователь root, и, похоже, тот, на котором установлено большинство модулей. Но кто-то, кто знает больше о том, почему на этой машине установлено несколько установок, может дать вам лучший совет, почему вам следует выбирать между различными установками Perl на машине.
После того, как вы выбрали установку Perlвам нужно убедиться, что ваша переменная $APTH
установлена так, чтобы ваша оболочка сначала нашла этот исполняемый файл Perl. И вам нужно установить переменную $PERL5LIB
так, чтобы она находила правильную библиотеку модулей для этой установки (хотя стоит отметить, что все установки Perl имеют путь поиска модулей по умолчанию, «записанный» в них по мере их сборки, и если вы неЕсли вы делаете что-то умное, скорее всего, вам вообще не нужно настраивать $PERL5LIB
.
В общем, кажется, что ваш сервер был настроен разными людьми на протяжении многих лет, и они 'Мы все установили свою собственную версию Perl по причинам, о которых я могу только догадываться. Лучший вариант - почти наверняка поговорить с людьми, которые больше знают историю этого сервера.