如何用Perl显示服务器上不断更新的文件行?
我试图显示持续更新的文件的更新。此文件是从服务器访问的,每次文件中有更新时都必须打印。这是我迄今为止成功构建的代码:如何用Perl显示服务器上不断更新的文件行?,perl,Perl,我试图显示持续更新的文件的更新。此文件是从服务器访问的,每次文件中有更新时都必须打印。这是我迄今为止成功构建的代码: open(FH,'<','log_file.txt') or die $!; # open file for (;;) { while (my $row = <FH>) { chomp $row; print "$row\n"; } sleep 1; seek FH, 0, 1; } open(FH),不要试图
open(FH,'<','log_file.txt') or die $!; # open file
for (;;) {
while (my $row = <FH>) {
chomp $row;
print "$row\n";
}
sleep 1;
seek FH, 0, 1;
}
open(FH),不要试图重新发明轮子;使用
与您的不同,它不会返回部分行,它会检测日志文件的旋转等。不要尝试重新发明轮子,请使用
与您的不同,它不会返回部分行,它会检测日志文件的旋转等。。您确定文件正在更新吗?请尝试显示-s“log\u file.txt”
搜索后。更新文件的过程可能正在缓冲其输出。您知道访问该行并对该行中的数据执行某些操作的方法吗?现有行是否已更新,还是在末尾添加了唯一的更改新行?我不想在睡眠前关闭文件,然后在while解决问题之前重新打开它问题。文件可能未更新,但已完全重写。现有行未更新,唯一的更新是添加我尝试访问的新行并对其执行操作。是否确实正在更新文件?请尝试显示-s“log\u file.txt”
搜索后。更新文件的过程可能正在缓冲其输出。您知道访问该行并对该行中的数据执行某些操作的方法吗?现有行是否已更新,还是在末尾添加了唯一的更改新行?我不想在睡眠前关闭文件,然后在while解决问题之前重新打开它问题。文件可能未更新,但已完全重写。现有行未更新,唯一的更新是添加我尝试访问的新行,并对其执行操作。
use File::Tail qw( );
my $tail = File::Tail->new('log_file.txt');
while (defined( my $line = $file->read() )) {
print($line);
}