use warnings; use strict; my @data = qw( 21112340 21112341 21112342 21112343 21112344 21112345 21112346 21112347 21112348 21112349 21112350 21112351 512340 512341 512342 512343 512344 512345 512346 512347 512348 512349 512350 512351 ); my %test; my @new; for my $item (@data) { next if $item !~ /^\d{2,}$/; my $suffix = chop($item); $test{$item}{$suffix}++; } for my $base (keys %test) { if (scalar(keys %{$test{$base}}) == 10) { push @new, $base; } else { push @new, $base.$_ for keys %{$test{$base}}; } } print "$_\n" for sort @new;