在Perl中模拟tail -f

时间:2012-05-04 02:29:40

标签: perl

根据solution provided in perldoc,我试图模仿tail -f,但它没有按预期工作。以下代码可以首次打印所有行,但不会附加新行。你能详细说明我是否遗漏了这里的任何东西。

#!/usr/bin/perl
open (LOGFILE, "aa") or die "could not open file reason $! \n";

for (;;)
{
        seek(LOGFILE,0,1);  ### clear OF condition        
        for ($curpos = tell(LOGFILE); <LOGFILE>; $curpos = tell(LOGFILE)) 
        {
                print "$_ \n";
        }

        sleep 1;
        seek(LOGFILE,$curpos,0); ### Setting cursor at the EOF
}

1 个答案:

答案 0 :(得分:1)

对我来说很好。你如何更新"aa"? 如果buffered写入"aa",您将无法立即看到数据。 您可以在不同的终端中尝试以下操作,并检查您是否看到任何更新。

while ( 1 )
echo "test" >> aa
end

如果您使用perl更新aa,请查看有关缓冲的this部分以及如何禁用。