How can I set the Windows PATH variable from Perl? How can I set the Windows PATH variable from Perl? windows windows

How can I set the Windows PATH variable from Perl?


If you need to change environment variables globally and permanently, as if you set it in the control panel, then you have to muck with the registry (update: and now there are modules to do this, Win32::Env and Win32::Env::Path). Note that changing variables in the registry and "broadcasting" the change will not change the environment variables in some current processes, notably perl.exe and cmd.exe.

If you just want to change the current process (and subsequently spawned child processes), then the global %ENV hash variable is what you want (e.g. $ENV{PATH}). See perldoc perlvar.


$ENV{PATH}?

Keep in mind that environment variables only affect subprocesses, however. You can't run a Perl program, change %ENV, and then see that change in the parent process -- the environment does not work that way.


You can do that using the %ENV hash

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