Get rid of $len and use the numbers themselves:
if (($answer < 1000) || ($len1 > 1e14)) {
$type = "b/s";
}elsif (($answer >= 1000) && ($answer <= 1e6)) {
$type = "Kb/s";
$answer = substr($answer, 0, 1)." ".$type if $len1 == 4;
$answer = substr($answer, 0, 2)." ".$type if $len1 == 5;
$answer = substr($answer, 0, 3)." ".$type if $len1 == 6;
}elsif (($len1 > 1e6) && ($len1 <= 1e9)) {
$type = "Mb/s";
$answer = substr($answer, 0, 1)." ".$type if $len1 == 7;
$answer = substr($answer, 0, 2)." ".$type if $len1 == 8;
$answer = substr($answer, 0, 3)." ".$type if $len1 == 9;
}else{
Just do a numeric check on $answer instead of tinkering with $length. By the way, 1e6 means: one multiplied by ten to the six( ten with six zeros).