おれのにっき

何か問題でも

Perlでファイルの先頭行を削除する

ログの保存とかで使うときが多いと思うので自分用の備忘録。

#!/usr/bin/perl

use strict;
use warnings;

my $line = 50; # ログ保存行数
my @log;

# とりあえず読み込む
if ( open( FILE, "< ./log.cgi") ) {
	@log = <FILE>;
	close FILE;
}

# キャッシュ保存数を超えていたら一行目を消す
shift @log if ( $line <= $#log + 1 );

# 後ろに新しい行を足す
push (@log, "(Add line)\n" );

# 書きこむ
if ( open( FILE, "> ./log.cgi") ) {
	print FILE @log;
	close FILE;
}

要は配列にいれて先頭を消して後ろに足せばいいのです。
頭いいんだか悪いんだか。