<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>Hello all.&nbsp; Please let me know if this is a good place for my 
questions.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am trying to read a log file and get a list of how many times an IP 
address get blocked each hour by category PO.&nbsp; An example line in the log 
with a block is:</DIV>
<DIV>-------------</DIV>
<DIV>[2005-09-28 10:05:03 -7:00] 127.0.0.1 71.32.59.249 216.163.137.3 - <A 
href="http://www.playboy.com/">http://www.playboy.com/</A> blocked 0 
PO<BR>-------------</DIV>
<DIV>What I have kinda works but I am not sure if it is the best practice.&nbsp; 
This is the first time programming in perl and this is what I have so far:</DIV>
<DIV>&nbsp;</DIV>
<DIV>sub Scanlog {<BR>&nbsp;&nbsp;&nbsp; local($ipb) = 
@_;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open my $slog, "-|", "tail -n 
50000 $log" or die "Unable to open 
$log:$!\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open 
(OUTPUT,"&gt;/etc/squid/iplist.txt");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
open 
(OUTPUT2,"&gt;/etc/squid/SuspendIpList.txt");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
while (&lt;$slog&gt;){&nbsp;&nbsp;&nbsp;&nbsp; # assigns each line in turn to 
$_<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # use an array slice to select the 
fields we want<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @data = (split 
,$_)[1,4,10,5,7];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $hr = (split /:/ 
,$data[0])[0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ip = 
"$data[1]";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($flag eq 
$data[2]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($hr eq 
$hour){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach 
(/$data[2]/){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $matches += 1 
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($matches &gt; 
$blocklimit){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ip1 = 
"$data[1]/32";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print OUTPUT 
"$matches,", "$hour, ","$ip1, <A href='mailto:", "@data","\n'>", 
"@data","\n</A>";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print OUTPUT2 
"$ip1\n";</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $matched = 
$matches;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $matches = 
0;<BR>}}}}<BR>close (OUTPUT);<BR>close (OUTPUT2);<BR></DIV>
<DIV>-------------------</DIV>
<DIV>I will take and help I can get.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Ryan Lamberton<BR></DIV></BODY></HTML>