Hi Monkees,
Is there anyway to assign a 2-value list as a key/value pair to a hash without clobbering the current keys/values in hash, and without excessive code? - e.g.
# Works, but needs double-split $hash{(split /X/, "fooXbar")[0]} = (split /X/, "fooXbar")[1]; $hash{(split /X/, "bishXbash")[0]} = (split /X/, "bishXbash")[1]; foreach(keys %hash){ print "1: $_ = $hash{$_}\n"; } # Works, but needs redundent array undef %hash; @array = (split /X/, "fooXbar"); $hash{$array[0]} = $array[1]; @array = (split /X/, "bishXbash"); $hash{$array[0]} = $array[1]; foreach(keys %hash){ print "2: $_ = $hash{$_}\n"; } # Tidy, but clobbers {foo} = 'bar' undef %hash; %hash = (split /X/, "fooXbar"); %hash = (split /X/, "bishXbash"); foreach(keys %hash){ print "3: $_ = $hash{$_}\n"; }
So, the first two approaches work, but IMHO look ugly. The third approach looks concise, but clobbers the hash each time. Hope that makes sense...
In reply to Assign (key, value) to a hash w/o clobbering hash by Melly
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |