http://www.perlmonks.org?node_id=1018847


in reply to Printing Last Element of a line using perl memory?

If we want to print last line of any file, we can use the following code.

use strict; use warnings; # open the file using _ to avoid multiple system calls invoked by perl open _,"filename"; # reading all lines from a file and store it into @lines array my @lines=<_>; # printing the last line of a file in @lines by $#lines => last index +of the array print @lines[$#lines];

Replies are listed 'Best First'.
Re^2: Printing Last Element of a line using perl memory?
by dave_the_m (Monsignor) on Feb 15, 2013 at 12:53 UTC
    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.