use warnings; use strict; my @data = qw( 21112340 21112341 21112342 21112343 21112344 21112345 21112346 21112347 21112348 21112349 21112350 21112351 ); my %sixpack; for my $item (@data) { my $suffix = chop($item); $sixpack{$item}{$suffix}++; } for my $six (sort keys %sixpack) { if (scalar(keys %{$sixpack{$six}}) == 10) { print "$six\n"; } else { print "$six$_\n" for sort keys %{$sixpack{$six}}; } }