2009-02-04 8 views

Répondre

16

Si vous avez besoin globalement et de façon permanente pour modifier les variables d'environnement, comme si vous le mettre dans le panneau de commande, vous devez muck with the registry (mise à jour: et maintenant il y a des modules pour le faire, Win32::Env et Win32::Env::Path). Notez que changer les variables dans le registre et "diffuser" la modification ne changera pas les variables d'environnement dans certains processus en cours, notamment perl.exe et cmd.exe.

Si vous souhaitez simplement modifier le processus en cours (et par la suite engendrer des processus enfants), la variable de hachage globale% ENV est ce que vous voulez (par exemple $ ENV {PATH}). Voir perldoc perlvar.

+0

Voir http://search.cpan.org/~adamk/Win32-Env-Path-0.01/lib/Win32/Env/Path.pm pour un module qui semble faire plus ou moins ce qui a été décrit dans ce nœud perlmonks. – oeuftete

+0

Merci, je ne connaissais pas ces modules ... et ils n'existaient pas au moment du nœud perlmonks. – runrig

+0

Celui-là a très bien pu s'inspirer de ton post ... qui sait. :) Il ne semble pas qu'il inclut votre étape du noeud PM pour diffuser la mise à jour. – oeuftete

7

$ ENV {CHEMIN}? Notez toutefois que les variables d'environnement n'affectent que les sous-processus. Vous ne pouvez pas exécuter un programme Perl, modifier% ENV, puis voir ce changement dans le processus parent - l'environnement ne fonctionne pas de cette façon.

+0

LOL, nous avons réussi à soumettre la même réponse dans la même seconde! :-p –

+0

Les grands esprits se ressemblent;) – jrockway

+0

Ack, c'était exactement ce que je voulais faire. Merci pour la réponse de toute façon – Xetius

4

Vous pouvez le faire en utilisant le %ENV hachage

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