my @d = qw(AAA30 BBC5 SHT12H DAL33B BBC49 AAA31 DAL33A BBC6 SHT12G BBC50); my %seen; map { print "$seen{$_},$_\n" if $seen{$_}; } map { my $v = $_; my $l = chop $v; $seen{$v.++$l}=$_; } @d; __END__ SHT12G,SHT12H DAL33A,DAL33B AAA30,AAA31 BBC5,BBC6 #### my @d = qw(AAA30 BBC5 SHT12H DAL33B BBC49 AAA31 DAL33A BBC6 SHT12G BBC50); my %seen; map { print "$seen{$_},$_\n" if $seen{$_}; } map { (my $v = $_ ) =~ s/(\d+|[A-Z])$//; my $l = $1; $seen{$v.++$l}=$_; } @d; __END__ SHT12G,SHT12H DAL33A,DAL33B AAA30,AAA31 BBC5,BBC6 BBC49,BBC50