sub Return_Middle { my @list = @_; return @list if ( scalar(@list) == 2 or scalar(@list) == 1 ); my @sorted = sort { $a <=> $b || $a cmp $b } @list; my @middle = drill_down(@sorted); return @middle; sub drill_down { my @list = @_; return @list if ( scalar(@list) == 2 ); return @list if ( scalar(@list) == 1 ); splice @list, -1, 1; splice @list, 0, 1; drill_down(@list); } }