use strict; use warnings; my %data; while () { next unless /\S/; chomp; my ($k, $v) = split / = /; push @{$data{$k}}, $v; } foreach (sort keys %data) { print "$_ = ", join(',', @{$data{$_}}), "\n"; } __DATA__ A = 1 A = 2 A = 3 B = 5 B = 1 B = 7