in reply to Very slow array searching

I've a function which searches a given number from an array and returns the result.

What you have is a function that tells whether one or more entries in the array contain a given substring. That's not the same as searching for a number.

Consider the difference between

my @matches = grep { /$l_number/ } @numbers;
and
my @matches = grep { $_ == $l_number } @numbers;
The former will match "11" when you're searching for a "1". That latter won't.

That problem aside, have you considered an alternate data structure? If you're going to be doing multiple probes for numbers, you might be better served by building a hash keyed by the number in each @number. Then, determining if a given number exists in the "array" becomes

if ( $number{$l_number} ) { ...
Also, returning the strings "TRUE" or "FALSE" makes writing
if ( checknumber(47) ) { ...
problematic, because the function will always return a non-false value. Return 0 (for false) and 1 (for true), and you'll save yourself a lot of grief later.