2009-02-04 13 views

Respuesta

16

Si necesita cambiar las variables de entorno globalmente y de forma permanente, como si se establece en el panel de control, entonces usted tiene que muck with the registry (actualización y ahora hay módulos para hacer esto, Win32::Env y Win32::Env::Path). Tenga en cuenta que cambiar variables en el registro y "transmitir" el cambio no cambiará las variables de entorno en algunos procesos actuales, especialmente perl.exe y cmd.exe.

Si solo desea cambiar el proceso actual (y, posteriormente, los procesos secundarios generados), la variable global hash% ENV es lo que desea (por ejemplo, $ ENV {RUTA}). Ver perldoc perlvar.

+0

Ver http://search.cpan.org/~adamk/Win32-Env-Path-0.01/lib/Win32/Env/Path.pm para un módulo que parece hacer más o menos lo que se describió en ese nodo perlmonks. – oeuftete

+0

Gracias, no sabía sobre esos módulos ... y no existían en el momento del nodo perlmonks. – runrig

+0

Eso puede haberse inspirado muy bien en tu publicación ... quién sabe. :) Parece que no incluye su paso desde el nodo PM para transmitir la actualización. – oeuftete

7

$ ENV {PATH}?

Tenga en cuenta que las variables de entorno solo afectan a los subprocesos. No puede ejecutar un programa Perl, cambiar% ENV y luego ver ese cambio en el proceso principal: el entorno no funciona de esa manera.

+0

¡LOL, logramos enviar la misma respuesta en el mismo segundo! :-p –

+0

Las grandes mentes piensan igual;) – jrockway

+0

Ack, eso era justo lo que quería hacer. Gracias por la respuesta de todos modos – Xetius

4

Puede hacerlo utilizando el hash %ENV

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