我正在尝试读取文件的最后一行。 并且有许多方法可用于读取文件的特定行。
首先:
@array=<FILE_HANDLE>;
$line=(reverse @array)[0];
第二个:ReadBackwards包
$bw = File::ReadBackwards->new( 'log_file' ) or
die "can't read 'log_file' $!" ;
$log_line = $bw->readline;
我想知道在 perl 中哪种方法更可取,是否使用 package 或将整个文件内容存储到变量中。
最佳答案
您的标题提出的问题与您的 body 提出的问题不同。
要从任意大的文件中读取最后一行(或从最后一行开始的第 n 行),绝对要使用 File::ReadBackwards。
要读取或写入文件中的任意一行,请使用 Tie::File:
use Tie::File;
tie my @line, 'Tie::File', 'filename' or die "unable to open filename: $!";
print "line 123 is $line[123].";
$line[42] = 'abc';
print "line 42 is now abc.";
对于大文件,这将比 File::ReadBackwards 昂贵得多,因为它需要通读整个文件直到您要修改的行(或者通读整个文件,如果使用负索引,所以如果你这样做,你最好使用 File::ReadBackwards 然后手动更新文件)。
关于perl - 在 perl 中读取或写入文件中特定行的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38767284/