Here is a start. I put to an array, but you could write to a file: #!perl -w my @MyMail = (); # hold email my $MyHoldMail = ''; # use to build each email msg my $In = 0; # count of lines my $MyProc = 0; # ready to process or not
while ( <DATA> ) { chomp; # remove \n $In++; # count of lines if ( /^\sFrom\s/i ) { # if at start of line push(@MyMail, $MyHoldMail) if ( $MyHoldMail ne '' ); # if something in MyHoldMail, push $MyHoldMail = ''; # clear the hold area $MyProc = 1; # set process flag } next if ( ! $MyProc ); # if haven't hit a from to signify start of processing, bypass $MyHoldMail .= $_ . "\n"; # concatenate together } push(@MyMail, $MyHoldMail) if ( $MyHoldMail ne '' ); # flush last item if any my $MyCnt = 1; # msg count foreach ( @MyMail ) { printf "\nMsg Nbr: %5d\n%-s", $MyCnt++, $_ . '*'x65 . "\n"; } __DATA__ <for testing purposes, put your email info here for processing> Wags ;) -----Original Message----- From: Marcelo [mailto:[EMAIL PROTECTED]] Sent: Friday, December 13, 2002 08:54 To: [EMAIL PROTECTED] Subject: Split a text file Hi everybody ... When I receive mail.. I can see it like a plain text file under /var/spool/mail/marcelo where all the messages are concateneted one after the other .... here is an example : From [EMAIL PROTECTED] Fri Dec 6 17:56:19 2002 Return-Path: <[EMAIL PROTECTED]> Received: from insight.incubadoras.org (insight.incubadoras.org [127.0.0.1]) by insight.incubadoras.org (8.12.5/8.11.6) with ESMTP id gB6MuJ56001698 for <[EMAIL PROTECTED]>; Fri, 6 Dec 2002 17:56:19 -0500 Received: (from root@localhost) by insight.incubadoras.org (8.12.5/8.12.5/Submit) id gB6MuJDC001696 for [EMAIL PROTECTED]; Fri, 6 Dec 2002 17:56:19 -0500 Date: Fri, 6 Dec 2002 17:56:19 -0500 From: root <[EMAIL PROTECTED]> Message-Id: <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: Prueba Status: O aqui va el msg. From [EMAIL PROTECTED] Thu Dec 12 13:11:55 2002 Return-Path: <[EMAIL PROTECTED]> Received: from jupiter.espoltel.net (jupiter.espoltel.net [xxx.xxx.xxx.xxx]) by insight.incubadoras.org (8.12.5/8.11.6) with ESMTP id gBCHNbKT013907 for <[EMAIL PROTECTED]>; Thu, 12 Dec 2002 12:23:37 -0500 Received: from pablo ([xxx.xxx.xxx.xxx]) by jupiter.espoltel.net (8.12.5/8.11.6) with SMTP id gBCHWVOS011823 for <[EMAIL PROTECTED]>; Thu, 12 Dec 2002 12:32:34 -0500 From: "Pablo Mora" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Subject: land Date: Thu, 12 Dec 2002 12:16:57 -0500 Another e-mail body ... I have a script that take the headers of one message ... but it doesn't works with this file when there are more than one file concateneted ..so I need to split the message into n parts where each part is a single message based in the word "From " that starts every mesage in this file ....How???... -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ********************************************************** This message contains information that is confidential and proprietary to FedEx Freight or its affiliates. It is intended only for the recipient named and for the express purpose(s) described therein. Any other use is prohibited. **************************************************************** -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]