Strawberry Perl: забывает переменные окружения?
Я установил несколько модулей в мой Strawberry Perl, работающий в Windows XP, например:
- Regexp:: Общие
- URI::Find::Schemeless
Эти библиотеки отлично работают в моем Perl-коде в первый раз сразу после установки каждого модуля.
Проблема в том, что каждый последующий день, когда я запускаю свои скрипты, они терпят неудачу с ошибкой:
Не удается найти Regexp/Common.pm в @INC (@INC содержит: C:/strawberry/perl/lib C:/ strawberry/perl/site/lib C:\strawberry\perl\vendor\lib .)
Я поместил все подходящие пути в переменные среды в Windows: PERL5LIB и другие, такие как lib, которые предлагались в различных других ответах на stackru и на других сайтах, связанных с установкой модулей. Сценарии продолжают терпеть неудачу, пока я не выполню следующий обходной путь, который я выяснил:
- Откройте окно "Изменить переменные среды" в Windows. ("Мой компьютер" -> "Свойства" -> вкладка "Дополнительно" -> "Переменные среды")
- Не добавляя и не меняя ничего, нажмите ОК.
- Снова откройте все консоли Perl, которые уже были открыты, или откройте новое окно Perl.
- Теперь библиотеки все найдены без проблем.
У кого-нибудь есть идея, почему это может происходить? Я подозреваю, что это может быть связано с Windows/cmd или даже с настройкой среды Windows моей компании?
Любые предложения будут оценены, потому что это очень раздражающая проблема!
1 ответ
Windows не очищает переменные среды ежедневно по умолчанию, поэтому, вероятно, что-то в ваших корпоративных настройках сбрасывает переменные среды.
Если это так, у вас есть несколько вариантов:
- Попросите администраторов сети изменить сценарий, чтобы он не сбрасывал их (или не включал
PERL5LIB
каталоги, которые вы хотите указать). - Напишите еще одно ежедневное задание, выполняемое после их ежедневного задания, которое повторно добавляет переменные на локальном компьютере.
- Оберните ваши Perl-скрипты в пакетный файл Windows или запустите их с
perl -I
указать библиотеку во время выполнения. - Запустите ваши Perl-скрипты из Cygwin Bash или Mingw Bash, которые не будут использовать глобальные переменные среды вашего компьютера.