我有一个要在Perl中解析的文本文件,我从文件的开头解析它并获取所需的数据.
完成所有这些后,我想用数据读取文件中的最后一行.问题是最后两行是空白的.那么我如何获得包含任何数据的最后一行.
如果文件相对较短,只需从您获取数据的位置继续读取,保留最后一个非空行:
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
}
Run Code Online (Sandbox Code Playgroud)
如果文件较长,或者您在初始数据收集步骤中已经通过了最后一个非空行,请重新打开并从末尾读取:
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/;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13126 次 |
| 最近记录: |