#!e:\perl\bin\perl.exe -w use strict; my $data="key1=value1 key2=value2 value3 key4=value4 value5 value6 key5=value7 key6=value8 key7=value9 value10"; my @values=split(/ /,$data); my ($h,$value, $v, $recentkey); my %output; my @hashkeys; for $value(@values) { if ($value =~ /=/) { ($recentkey, $v) = split(/=/,$value); $output{$recentkey} = $v; } else { $output{$recentkey} .= ",$v"; } } @hashkeys = keys %output; for $h(@hashkeys) { print "$h: $output{$h} \n"; }