#!perl -w use strict; my (%variable) = ( 'EngineConfigDir' => 'c:\Daily\DreBa_Connect_Engine\Config'); &SetSystemVariable(\%variable); # ------------------------------------------------------------ sub SetSystemVariable { my ($variable) = @_; # well, this should be in the head of your script # I just put it here to complete the function use Win32::TieRegistry( ArrayValues=>0 ); my $pound= $Registry->Delimiter("/"); my $systemVariable = $Registry->{"LMachine/SYSTEM/CurrentControlSet/Control/Session Manager/Environment"} or die ("Can't find root\n");; # set systemvariable foreach (keys %$variable){ $systemVariable->{"/$_"} = $variable->{$_}; } my $systemVariable2 = $Registry->{"LMachine/SYSTEM/CurrentControlSet/Control/Session Manager/Environment"} or die ("Can't find\n");; foreach my $key (keys %$systemVariable2){ print ("$key => $systemVariable->{$key}\n") if (grep { $key eq "/$_" } keys %$variable); } } # SetSystemVariable # ------------------------------------------------------------