use strict; use warnings; my %seen; print map { $seen{$_} > 1 ? $_ x $seen{$_} . "\n" : () } grep { not $seen{$_}++ } grep { !/^\s*$/ } ; __DATA__ Group 1 Group 2 Group 3 Group 3 Group 3 Group 4 Group 5 Group 5 Group 5 Group 5 Group 1