That code is bad in so many ways.
# open the file using _ to avoid multiple system calls invoked by perl
open _,"filename";
This is complete nonsense. Using an underscore as the filename makes no difference to the execution, but makes the code harder to understand. Also, you should normally use lexical filehandles. Lastly, there's no error checking on the open.
my @lines=<_>;
This will crash with memory exhaustion if the file is too large
@lines[$#lines];
With warnings enabled, that will give:
Scalar value @lines[$#lines] better written as $lines[$#lines]
But could be even better written as
$lines[-1]
Dave.