#!/usr/bin/perl -w use strict; my $log = './log'; # Open the firewall log file and create new array containing all of the data. open LOG, "<", $log or die "Can't open $log: $!"; my @data = ; close LOG; # Split the @data array into separate arrays by category. my (@dst, @service); my $dup_count = 0; my $last_dst = ''; my $last_service = ''; foreach (@data) { my @lines=split "\n",$_; foreach(@lines){ my ($dst,$service) = (split /;/,$_)[11,12]; push(@dst, $dst); push(@service, $service); if ( $dst eq $last_dst and $service eq $last_service ) { $dup_count++; # you probably want to clean up dup_count here to avoid func # being called for dup 51, dup 52, etc &some_func if $dup_count >= 50; } else { # didn't match, so we reset; $dup_count = 0; } $last_dst = $dst; $last_service = $service; } }