in reply to Re^2: Read Last Line of A File Only
in thread Read Last Line of A File Only

Or better yet, using the safer syntax options available in 5.6 and later:
my $lastline = do { open my $pipe, '-|', tail => -1, $file or die "Can't spawn tail: $!\n"; <$pipe>; }; print $lastline;

Interesting. Could you please point me to the documentation of this feature? I took a look around perldoc and couldn't find it, so I am surely searching the wrong way

Thanks in advance

Ciao!
--bronto


The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz

Replies are listed 'Best First'.
Re^4: Read Last Line of A File Only
by Aristotle (Chancellor) on Aug 24, 2004 at 11:04 UTC

    You're talking about the multi-argument form for piped opens? Sorry, that was added in Perl 5.8. The hooks were there in 5.6, ie the syntax was recognized, but Perl would die with an error at runtime if you tried to do that.

    perl58delta says:

    If your platform supports fork(), you can use the list form of "open" for pipes. For example:

    open KID_PS, "-|", "ps", "aux" or die $!;

    forks the ps(1) command (without spawning a shell, as there are more than three arguments to open()), and reads its standard output via the KID_PS filehandle. See perlipc.

    When I said "safer options" I also referred to lexical filehandles, of course, for which my assertion about 5.6 was correct.

    Makeshifts last the longest.