Ok so how would I use this with all of my .out files. When I run it by itself it prints Date Status Score but nothing else even when in the folder with all of the .out files. When I attempt to give it a file to parse "reportparse.pl *.out) it gives me the below errors
C:\ESA>reportparse.pl Date Status Score C:\ESA>reportparse.pl c:\esa\ham\ Date Status Score Can't do inplace edit: c:\esa\ham\ is not a regular file at C:\ESA\reportparse.p l line 2. C:\ESA>reportparse.pl c:\esa\ham\* Date Status Score Can't open c:\esa\ham\*: Invalid argument at C:\ESA\reportparse.pl line 2. C:\ESA\Ham>reportparse.pl * Date Status Score Can't open *: Invalid argument at C:\ESA\Ham\reportparse.pl line 2. On Wed, 9 Mar 2005 11:32:47 -0500, Bowie Bailey <[EMAIL PROTECTED]> wrote: > From: Tim P [mailto:[EMAIL PROTECTED] > > > > I am using spamassasin on windows with the ESA message sync ( > > http://www.christopherlewis.com/ExchangeSpamAssassin.htm ) and > > would like to have some statistics so that I can better tune the > > spam assassin (particularly with the minimum spam setting and the > > purge on discovery setting). > > > > As perl is already installed what I really need is a perl script > > that can go through the messages that the ESA dumps out (.out > > files that can be read by notepad), grab the following lines and > > dump them into a file format (like a csv or a delimited text > > file) so that I can use something to give me statistics. > > > > X-Spam-Status: Yes, score=28.9 > > Date: Tue, 4 Jan 2005 06:36:10 -0700 > > > > I would really like to be able to give statistics by date (daily, > > weekly, monthly), averages, numbers of spams/hams for a time > > period. Most of that can be done using excel if I have to but > > its getting that info into a readable fileformat that is beyond > > me. Anyone out there know how to do something like that? > > Parsing the file and producing delimited text that can be imported > into Excel is simple with Perl. > > Assuming that each email scanned will produce both of the lines you > listed and assuming that those entries are on their own lines and > not part of a longer line, this should work for you (untested): > > print "Date\tStatus\tScore\n"; > while (<>) > { > if (/^X-Spam-Status: (Yes|No), score=([0-9.]+)/) > { > $status = $1; > $score = $2; > } > if (/^Date: (.*) [-+]\d{5}$/) > { > $date = $1; > } > if ($status and $score and $date) > { > print "$date\t$status\t$score\n"; > undef $date; > undef $status; > undef $score; > } > } > > Output would be tab separated like this (formatted for readability): > > Date Status Score > Tue, 4 Jan 2005 06:36:10 Yes 28.9 > > Bowie >
