use warnings; use strict; my @middle = qw( 49998 49999 50000 50001 50002 50003 ); my @limit = qw( 99997 99998 99999 00001 00002 00003 ); use Data::Dumper; print "MIDDLE\n"; print Dumper sort ro @middle; print "LIMIT\n"; print Dumper sort ro @limit; sub ro { ( abs($a - $b) > 5000 ? $b <=> $a : $a <=> $b ) } #### MIDDLE $VAR1 = 49998; $VAR2 = 49999; $VAR3 = 50000; $VAR4 = 50001; $VAR5 = 50002; $VAR6 = 50003; LIMIT $VAR1 = 99997; $VAR2 = 99998; $VAR3 = 99999; $VAR4 = '00001'; $VAR5 = '00002'; $VAR6 = '00003';