system()
(по крайней мере, в Unix-подобных системах) вызывает указанную команду через /bin/sh
.В отличие от bash, /bin/sh
не имеет source
в качестве синонима для .
.
Но даже если вы измените его на system(". env.bash")
, это не сработает.Предположительно env.bash
устанавливает переменные среды (export FOO=BAR; ...
).Такие настройки применяются только к текущему процессу.Он будет вызывать оболочку, устанавливать переменные окружения в этой оболочке и затем не влиять на вызывающий (perl) процесс.
Я никогда раньше не использовал Shell::GetEnv
, но согласно документации %opt
используется для передачи параметров функциям. Вы не показали нам, какое значение имеет %opt
.Вы уверены, что вам это нужно?Возможно, вы просто хотите сделать:
...
$envs = $env->envs();
$env->import_envs();