my %data; while () { chomp; my @vals = split /;/; $data{$vals[0]}{$vals[1]}++; } #### foreach my $key (keys %data) { print "$key;"; print join(';', keys %{$data{$key}}); print "\n"; }