Я адресую это с помощью FindBin :
use FindBin;
use lib "$FindBin::Bin/../lib";
Или, если активен режим загрязнения:
use FindBin;
use lib ("$FindBin::Bin/../lib" =~ m[^(/.*)])[0];
Поскольку это не зависит от известных или фиксированных путей, оно позволяет создавать столько независимых наборов кода на одном компьютере, сколько мне нравится, просто создавая новую копию каталога проекта.
Я сохраняю полные копии всех модулей проекта в каждом образе разработки проекта, но похоже, что вы этого не делаете, а вместо этого полагаетесь на то, что бета-копия возвращается к модулям действующей копии; use lib /path/to/live/bin
до use lib
выше будет обрабатывать это, или вы можете просто связать /path/to/live/bin
с одним из каталогов на @INC
, чтобы он всегда был доступен сразу.
Если живая и бета-версия будет запускаться с разных учетных записей, local :: lib также стоит посмотреть, но на самом деле это не то, для чего она предназначена.
ОБНОВЛЕНИЕ: Это не работает, если сами сценарии могут находиться в нескольких подкаталогах данного каталога, но работает иначе.