syslogファイルをパースする
Parse:Syslogモジュールを使うと簡単です。
use strict; use warnings; use Parse::Syslog; my $filename = '/var/log/messages'; # syslogファイル名 my $year = 2005; # syslog開始年 my $ps = Parse::Syslog->new($filename, year => $year); while (my $log = $ps->next) { printf "time: %s\n", $log->{timestamp}; printf "host: %s\n", $log->{host}; printf "prog: %s\n", $log->{program}; printf "pid : %s\n", $log->{pid} || ''; printf "text: %s\n", $log->{text}; print "\n"; }newの中でyearでsyslog開始年を設定しています。通常syslogファイルの日時の部分には年の情報が出力されないために、ここで開始年を指定します。yearを省略した場合は当年を指定したことになります。