use strict; use warnings; my @array = qw(key1:value1 key2:value2 key3:value3); my (%hash, $key, $val); foreach (@array) { ($key, $val) = split ":"; $hash{$key} = $val; } print "\$hash{$_} = $hash{$_}\n" foreach keys %hash; #### %hash = map {# what the heck goes here?} @array;