Wenn die Datei relativ kurz ist, lesen Sie einfach auf, von wo aus Sie fertig die Daten bekommen, die letzte nicht leere Zeile zu halten:
use autodie ':io';
open(my $fh, '<', 'file_to_read.txt');
# get the data that is needed, then:
my $last_non_blank_line;
while (my $line = readline $fh) {
# choose one of the following two lines, depending what you meant
if ($line =~ /\S/) { $last_non_blank_line = $line } # line isn't all whitespace
# if (line !~ /^$/) { $last_non_blank_line = $line } # line has no characters before the newline
}
Wenn die Datei länger ist, oder Sie das letzte bestanden haben kann nicht leere Zeile in Ihren ersten Daten Schritt sammelt, wieder öffnen und vom Ende lesen:
my $backwards = File::ReadBackwards->new('file_to_read.txt');
my $last_non_blank_line;
do {
$last_non_blank_line = $backwards->readline;
} until ! defined $last_non_blank_line || $last_non_blank_line =~ /\S/;
Die Leute, die diese Frage zu schließen gestimmt scheinen mit Perl wenig Erfahrung zu haben. Als eine Perl-Person, ich denke, der erste Satz zeigte genügend Wissen, um den minimalen Verständnis-Test zu bestehen. Kein Punkt in trivialem Code (mindestens in Perl). –