Perl:使用核心perl工具清除日志文件中的行

时间:2016-03-31 08:35:03

标签: perl file

首先已经阅读下面列出的文章,以了解使用核心perl编写文件的用户。

- http://perlmaven.com/writing-to-files-with-perl

- http://perlmaven.com/appending-to-files

我怀疑。在我的情况下,我需要写一个日志文件,但必须是一个轻型日志,我的意思是50行文本。

因此,每次交互都必须擦除第一行并写入日志的底部。

您使用什么参数来实现这一目标?

我的想法是从日志中获取所有数据并输入一些变量,如数组并删除第一个值,然后使用open(FILEHANDLE,">filename");再次写入日志。

使用唯一的核心工具没有perl方法来完成这项工作吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这是非常低效的,因为正确的想法 - 唯一的方法是重写日志文件,而不是第一行。

如果你还在做什么,那么tail +2就可以了。

但我建议每次添加一行日志时重写日志文件的效率都非常低,而且你做得更好的是写多个 - 并删除' old'的。

E.g:

  • stat文件获取大小,因为您正在阅读元数据,而不必阅读文件内容。
  • 如果大小大于预定义的限制(50行x 80个字符宽,则为4000个字节),则打开一个新文件。
  • 列出其余文件,如果有任何文件太旧'删除它们。 (保持'当前'以及'以及'并且您将始终拥有4000-8000字节的' log')

如果失败,您可以按照建议的方式重写日志文件。请注意,如果您这样做,那么在日志为空/零长度的情况下,这将是一个短暂的时期。而且,您永远无法在日志上运行tail -f