my %data = ( "one" , 1, "two",2,"three",3,"four",4,"five",5,"six",6,"seven",7,"eight",8,"nine",9); my %newData = (); while (my ($key1,$val1) = each(%data)) { if (my ($key,$value) = each(%data)) { $newData{$key1,$key} = "$val1$;$value"; } else { last; } } map { print "$_ : $newData{$_}\n";} keys %newData ;