while ( my ($key,$string) = each %oldhash ) { my @elements = split /\s+/, $string; $newhash{$key} = \@elements; } # You can now access data from it like this: # print the first element in the array referred to by $key print $newhash{$key}->[0], "\n"; # print out all of the elements for a given key print "$key: ", join @{$newhash{$key}}, '-', "\n";