找到点资料.给楼主看看吧.

如何实现perl版的tail命令?
ELM 发表于: 2006-11-30 14:18 来源: 榆树社区
这里简单介绍一下如何使用perl实现简单的tail功能。

tail命令是常用的unix工具,可以实时的监视文本的变化,做email的朋友最常用tail来监视日志的变化。

通过perl可以实现一个非常简单的tail,它可以监视日志的变化,并实时的打印出来。


1)产生变化内容的程序例子(genlog.pl)
CODE:

use IO::Handle;
open (FD, "> /tmp/test.log") or die $!;
FD->autoflush(1);
while (1) {
    my $now = time;
    print FD $now, "\n";
    sleep 1;
}
close FD;
这个小程序在/tmp目录下产生一个test.log的临时文件,并且每隔1秒写入当前时间的unix 时间戳

因此用普通的tail命令可以看到/tmp/test.log的内容是不断增长的。要注意的是红色的那行将

文件描述FD设置为自动冲刷(缓冲区),因此凡是写入的信息都立刻同步到磁盘,如果没有这行

那么写入的内容不能立刻反应到test.log里。


下面我们来设计一个读取这个增长内容的小程序。

2)perl版tail
CODE:

open (FD, "< /tmp/test.log") or die $!;
while (1) {
    my $in = <FD>;
    print $in;
}
close FD;
这个程序更简单。只要可读,将不断的读取/tmp/test.log的内容。通过这2个小程序,就演示了

如何监视不断增加的日志的方法。perl来实现这些工作,实在是太简单了!
http://www.wenzk.net/index.php/viewthread-577.shtml