use strict; use warnings; use File::Basename; my (@count, %seen); my @mask = qw(/some/path/ some/other/path another/path); open (FH, '<', "access.log") or die "Unable to open 'access.log' for reading: $!"; while () { chomp; for my $m (@mask) { my $regex = "GET.*" . $m . ".*HTTP/1.1\" 200 [0-9].*"; if (/$regex/) { s/.*GET //; s/ HTTP.*//; my $bn = basename($_); push @count, $bn if ! $seen{$bn}++; } } } print "$_ = $seen{$_}\n" for @count;