#!/usr/bin/perl # USAGE: findmail [regexp] < mailfile # Searches From/To/Subject/Date for [regexp] # 1.00 erco@3dsite.com $search = $ARGV[0]; # READ ALL LINES FROM MAIL FILE ON STDIN while ( ) { # PARSING A MAIL HEADER? if ( $header ) { if ( /^Date: / ) { $date = $_; } if ( /^To: / ) { $to = $_; } if ( /^From: / ) { $from2 = $_; } if ( /^Date:/ ) { $date = $_; } if ( /^Subject:/ ) { $subject= $_; } # END OF MAIL HEADER? if ( /^$/ ) { $header = 0; # HANDLE SEARCH MATCHING # On match, print the (abbreviated) buffered email header info # if ( $from =~ m/$search/ || $from2 =~ m/$search/ || $date =~ m/$search/ || $to =~ m/$search/ || $subject =~ m/$search/ ) { $flag = 1; printf("\n%s%s%s%s%s",$from,$from2,$to,$date,$subject); } } } else # START OF NEW MAIL HEADER? { if ( /^From / ) { $from = $_; $header = 1; $flag = 0; } } # PRINT REST OF MESSAGE IF THERE WAS A MATCH if ( $flag ) { print $_; } }