perl如何监控文件

perl如何监控文件

现在有几个文件,想使用perl来实时的监控这些文件变化。如果某个发生了变化就将这个文件变化的部分打印出来!
有没有什么好的办法或者告诉我用哪个mode!谢谢了!
什么操作系统?
新手瞎说一句:

1、定期检查文件的修改时间,如果和上次的变化了,那么就确定该文件被修改(并保存当前的修改时间为比较标志)

2、如果确定该文件被修改,那就比较该文件和的变化并打印出来(并保存当前文件以作下一次文件比较)

只想到这样做,不过感觉这办法好老土。而且当文件较大的时候,是很烦人的。再有一个就是,我不知道PERL读文件的时候,该文件会不会被锁住;如果被锁住,对该文件的更新不知道有没有影响。
如果文件不大就把文件按行做个hash,并计算文件的原始md5码。判断md5码的变化,如果不同,就比对一次差异。呵呵。前提就是文件不能太大。大了,就只能把文件的原始本保留,发现md5不同,就直接用diff得出不同就好了。

个人浅见。呵呵
本人用的是redhat as4 操作系统。现在用File::Modified,只能是哪个文件发生变化了。但没有将变化的部分打印出来,我现还想要变化的部分显出来,保存文件也可以。
这个文件是不是像日志那样追加的,如果那样,直接管道打开tail命令
open(FILE,"tail -F $FILE | ")
tail -F 好像是一直打开吧。有新的内容就会显示出来。但不会是变化的内容打印出来!
现在新的内容和老的内容不容易分便开来。
现在的做法都是从判断文件是否变化入手,如果可以有比如监控某个inode的钩子,任何写入这个inode的数据都可以钩出来那最好了。。
类似于cvs版本控制。
程序启动的时候,读取文件长度.文件上次修改时间.然后保存..不停的读时间,初始的时间做对比,只要有变化就打印.

1.取动perl脚本.设置初始的
时间变量
文件偏移变量

2.不停的读到时间,并与时间变量中的值做对比..只要时间改变了..将这个改变后的值.赋给时间变量.

3.读取文件偏移..打开文件,将文件偏移变量中的值做为起始输出位置,到当前读取到的文件偏移位置..

就这样不停的循环.

好下效率很低下啊.