我有一個非常大的日誌文件,它會定期更新。這是因爲如下:Perl根據條件解析文件
commands: (List of files to be copied)
Exit time: Fri May 10 05:33:00 2013
Exit status: 2
commands: (List of files to be copied)
Exit Time: Fri May 20 05:34:00 2013
Exit status: 2
commands: (List of files to be copied)
Exit Time: Fri May 30 05:50:00 2013
Exit Status: 1
我有以下根據退出狀態,其產生的哈希碼
while ($line = <FH>) {
if ($line =~ /Exit time/) {
($exittime, $exittimeval) = split(': ',$line);
$stat{$qbsid} = {
time => $exittimeval
};
}
我現在需要基於本地時間使得腳本不比較日誌創建時間戳文件的時間戳後(本地時間)。我的代碼進行比較的時候如下
$date1 = "$hr1:$min1:$sec1, $moy1/$dt1/$yr1";
$date2 = "$hr2:$min2:$sec2, $moy2/$dt2/$yr2";
sub to_comparable {
my ($date) = @_;
my ($H,$M,$S,$d,$m,$Y) = $date =~ m{^(\d+):(\d+):(\d+), (\d+)/(\d+)/(\d+)\z}
or die;
return "$Y$m$d$H$M$S";
}
if (to_comparable($date2) > to_comparable($date1)) {
print "right\n";
} else {
print "wrong \n";
}
這裏$ HR1,$ MIN1,$秒-1,$ moy1,$ DT1及$ YR1均爲當地時間變量而HR2,$ MIN2,$秒2,$ moy2,$ dt2和$ yr2是從散列獲得的值。
最好在首次運行時比較整個文件並創建一個時間戳。之後,上述想法開始。
如果有任何問題,請糾正我。謝謝。
任何替代時間::件module..If我可以像年,月,日,小時,分鐘,秒等正常比較..只是一個建議..謝謝 – deep
@deep它可用於Perl 10或更新版本。你爲什麼不想用它?是的,如果需要,你可以手工編寫代碼。 –