Skif 
В такой конструкции, warning получишь сразу
...
if ($line eq \'\') { 
    $result = 1; 
} 
elsif (defined $line) { 
    $result = $line; 
} 
else { 
    $result = 1 
} 
return  $result;
... 
И последнее условие немного странное... переменная может быть либо определена, либо не определена, но никак не "наполовину определена".
Проще всего записать так, и не морочится:
$result = $line || 1;