Here is one that I wrote to parse a WebServer log file, and look for what ever the user typed in. It will then display the records that matched. It would be easy to change and mail out the results using sendmail... Let me know if you have any questions....
John #! perl -w use CGI; my $query = new CGI; print $query->header; print $query->start_html("Parse Web Log"); print "<body BACKGROUND=\"/images/backgrounds/blue_sky_fade.jpg\" >"; get_vars(); get_file(); if ($match_count > 0 ) {if ($REC) {view_detail()} else {view_data();} } else {$msg="No matches found for $search<BR>$total_count lines searched"; enter_date();} sub get_vars { $date = $query->param('DATE'); $search = $query->param('SEARCH'); $REC = $query->param('REC'); $search = uc($search); if ($date) {} else {enter_date();} $year = substr($date,2,2); $month = substr($date,5,2); $day = substr($date,8,2); $logfile = 'ex' . "$year" . "$month" . "$day" . '.log'; } sub enter_date { print "<SCRIPT LANGUAGE='JavaScript' SRC='/java_scripts/date.html'></script>"; print "<SCRIPT LANGUAGE='JavaScript' SRC='/java_scripts/get_current.html'></script>\n"; print "<TABLE border=0 width=100% height=100%><TR><TD>\n"; print "<CENTER><FORM ACTION='/cgi_bin2/utilities/parse_web_log.pl' >\n "; print "<TABLE BORDER=1>\n"; print "<TR><TD COLSPAN=2><CENTER><H2>Search Web Logs</TD></TR>"; print "<TR><TD COLSPAN=2><CENTER>$msg</CENTER></TR>"; print "<TR><TD><B><CENTER>Date to Search </CENTER></B> </TD><TD><input type='TEXT' name='DATE' onBlur='checkdate(this)' onFocus='get_date(this)'></TD></TR>"; print "<TR><TD><B><CENTER>String to Look For </CENTER></B> </TD><TD><input type='TEXT' name='SEARCH' ></TD></TR>"; print "<TR><TD colspan=2><center><input type=submit name='submit' value='Go Find It'><center></TD></TR>\n "; print "</TD></TR>"; print "</TABLE>\n"; print "</FORM>\n "; print "</TD></TR></TABLE>\n"; exit; } sub get_file { $file = "c:/winnt/system32/logfiles/w3svc1/$logfile"; $total_count=0; $match_count=0; open(LOGFILE,$file); while (LOGFILE) { $total_count++; $line = <LOGFILE>; if ($line eq "") { last}; $linetest = uc($line); $test = $linetest =~ m"$search"; if ($test >0) {$match_count++; @LINE[$match_count] = $line;} } close(LOGFILE); } sub view_data { print "<table border=1>"; $rec=0; $date = ''; $htime = ''; $c_ip = ''; $cs_username = ''; $s_sitename = ''; $s_computername = ''; $s_ip = ''; $s_port = ''; $cs_method = ''; $cs_uri_stem = ''; $cs_uri_query = ''; $sc_status = ''; $sc_win32_status = ''; $sc_bytes = ''; $cs_bytes = ''; $time_taken = ''; $cs_version = ''; $cs_host = ''; $cs_User_Agent = ''; $cs_Cookie = ''; $cs_Referer = ''; print "<TR><TD><B><CENTER> Rec </CENTER></B></TD>"; print "<TD><B><CENTER> Date </CENTER></B></TD>"; print "<TD><B><CENTER> Time </CENTER></B></TD>"; print "<TD><B><CENTER> Client </CENTER></B></TD>"; print "<TD><B><CENTER> Client Name </CENTER></B></TD>"; print "<TD><B><CENTER> Method </CENTER></B></TD>"; print "<TD><B><CENTER> URI </CENTER></B></TD>"; print "<TD><B><CENTER> Status </CENTER></B></TD>"; print "<TD><B><CENTER> Win32 Status </CENTER></B></TD>"; print "<TD><B><CENTER> SC Bytes </CENTER></B></TD>"; print "<TD><B><CENTER> CS Bytes </CENTER></B></TD>"; print "<TD><B><CENTER> Time Taken </CENTER></B></TD>"; while ($rec <= $match_count) { $rec++; ($date, $htime, $c_ip, $cs_username, $s_sitename, $s_computername, $s_ip, $s_port, $cs_method, $cs_uri_stem, $cs_uri_query, $sc_status, $sc_win32_status, $sc_bytes, $cs_bytes, $time_taken, $cs_version, $cs_host, $cs_User_Agent, $cs_Cookie, $cs_Referer) = split(m"\s",@LINE[$rec]); print "<TR><TD><A HREF=\"/CGI_BIN2/utilities/parse_web_log.pl?DATE=$date&SEARCH=$search&REC=$r ec\">$rec</A></TD>"; print "<TD>$date </TD>"; print "<TD> $htime </TD>"; print "<TD> $c_ip </TD>"; print "<TD> $cs_username </TD>"; print "<TD> $cs_method </TD>"; print "<TD> $cs_uri_stem </TD>"; print "<TD> $sc_status </TD>"; print "<TD> $sc_win32_status </TD>"; print "<TD> $sc_bytes </TD>"; print "<TD> $cs_bytes </TD>"; print "<TD> $time_taken </TD>"; } print "</table>"; exit; } sub view_detail { print "<table border=1>"; ($date, $htime, $c_ip, $cs_username, $s_sitename, $s_computername, $s_ip, $s_port, $cs_method, $cs_uri_stem, $cs_uri_query, $sc_status, $sc_win32_status, $sc_bytes, $cs_bytes, $time_taken, $cs_version, $cs_host, $cs_User_Agent, $cs_Cookie, $cs_Referer) = split(m"\s",@LINE[$REC]); print "<TR><TD><CENTER><B>Date </CENTER></B></TD><TD> $date </TD></TR>"; print "<TR><TD><CENTER><B>Time </CENTER></B></TD><TD> $htime </TD></TR>"; print "<TR><TD><CENTER><B>Client </CENTER></B></TD><TD> $c_ip </TD></TR>"; print "<TR><TD><CENTER><B>User </CENTER></B></TD><TD> $cs_username </TD></TR>"; print "<TR><TD><CENTER><B>Site </CENTER></B></TD><TD> $s_sitename </TD></TR>"; print "<TR><TD><CENTER><B>Server </CENTER></B></TD><TD> $s_computername </TD></TR>"; print "<TR><TD><CENTER><B>Server IP </CENTER></B></TD><TD> $s_ip </TD></TR>"; print "<TR><TD><CENTER><B>Server Port </CENTER></B></TD><TD> $s_port </TD></TR>"; print "<TR><TD><CENTER><B>Method </CENTER></B></TD><TD> $cs_method </TD></TR>"; print "<TR><TD><CENTER><B>STEM </CENTER></B></TD><TD> $cs_uri_stem </TD></TR>"; print "<TR><TD><CENTER><B>Query </CENTER></B></TD><TD> $cs_uri_query </TD></TR>"; print "<TR><TD><CENTER><B>Status </CENTER></B></TD><TD> $sc_status </TD></TR>"; print "<TR><TD><CENTER><B>Win32 Status </CENTER></B></TD><TD> $sc_win32_status </TD></TR>"; print "<TR><TD><CENTER><B>S -> C Bytes </CENTER></B></TD><TD> $sc_bytes </TD></TR>"; print "<TR><TD><CENTER><B>C -> S Bytes </CENTER></B></TD><TD> $cs_bytes </TD></TR>"; print "<TR><TD><CENTER><B>Time </CENTER></B></TD><TD> $time_taken </TD></TR>"; print "<TR><TD><CENTER><B>Client Version </CENTER></B></TD><TD> $cs_version </TD></TR>"; print "<TR><TD><CENTER><B>Client Host </CENTER></B></TD><TD> $cs_host </TD></TR>"; print "<TR><TD><CENTER><B>Client Agent </CENTER></B></TD><TD> $cs_User_Agent </TD></TR>"; print "<TR><TD><CENTER><B>Client Cookie </CENTER></B></TD><TD> $cs_Cookie </TD></TR>"; print "<TR><TD><CENTER><B>Referer </CENTER></B></TD><TD> $cs_Referer </TD></TR></TR>\n"; print "</table>"; exit; } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]