my @list = qw( .coop .com.co .com.mv .com.fj .com.sb .com.nf ); @list= sort { my (undef,$sub1,$tld1)=split /\./,$a; my (undef,$sub2,$tld2)= split /\./,$b; warn "[$sub1].[$tld1] cmp [$sub2].[$tld2]\n"; $sub1 cmp $sub2 || $tld1 cmp $tld2 } @list; print "$_\n" for @list; __END__ .com.co .com.fj .com.mv .com.nf .com.sb .coop