my $red = undef; my $green = undef; my $blue = undef; sub change{ my($color1, $value1, $color2, $value2, $color3, $value3) = @_; ${$color1} = $value1; ${$color2} = $value2; # maybe: if defined $value2; ${$color3} = $value3; } change(\$red, 42, \$green, 255, \$blue, 11); print "($blue)"; #### #!/usr/bin/perl use strict; use warnings; my %COLORS = ( red => undef, green => undef, blue => undef, ); sub change2{ my($R) = @_; my %H = %$R; for my $key (keys %H){ $COLORS{$key} = $H{$key}; } } change2( {red=>5, green=>6, blue=>7} ); print $COLORS{red};