Как я могу установить переменную Windows PATH из Perl? - PullRequest
11 голосов
/ 04 февраля 2009

Мне нужно установить переменную окружения из Perl. В идеале мне нужно запросить переменную, а затем изменить ее, если это не то, что требуется. В частности, это переменная PATH, которую я хочу изменить.

Как мне получить и установить эти переменные?

Ответы [ 3 ]

16 голосов
/ 04 февраля 2009

Если вам нужно глобально и постоянно изменять переменные окружения, как если бы вы установили их на панели управления, тогда вам нужно гадить с реестром (обновление: и теперь есть модули для этого, Win32 :: Env и Win32 :: Env :: Path ). Обратите внимание, что изменение переменных в реестре и «широковещательное» изменение не изменит переменные среды в некоторых текущих процессах, особенно perl.exe и cmd.exe.

Если вы просто хотите изменить текущий процесс (и впоследствии порожденные дочерние процессы), то вам нужна глобальная хеш-переменная% ENV (например, $ ENV {PATH}). См. perldoc perlvar .

7 голосов
/ 04 февраля 2009

$ ENV {PATH}?

Имейте в виду, что переменные окружения влияют только на подпроцессы. Вы не можете запустить Perl-программу, изменить% ENV, а затем увидеть это изменение в родительском процессе - среда не работает таким образом.

4 голосов
/ 04 февраля 2009

Вы можете сделать это, используя %ENV хэш

$ENV{PATH} = 'C:\\Windows\;D:\\Programs';
...