array or two should do the trick.  depends on what you want to check in your
conditionals.

are the number of lines per data "element" static or dynamic?

to separate the logic between, collecting the data and the records
conditionals, just separate into 2 loops.


LOGIC code only:

while ( <IN> )

   until ( blankLine )
      push into @thisChunk
   if ( criteria )
      spit @thisChunk to fileA
   else
      spit @thisChunk to fileB
}

Kinda like that?

Post some code and/or more specific requirements and I'm sure we can help.
This is the beginner list so don't be shy.

-Tom Kinzer


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Sunday, December 07, 2003 6:35 PM
To: [EMAIL PROTECTED]
Subject: How to process multi-line records ?


Hi all:

This newbie is back looking for some hints on how to handle this problem
in processing a file that has multiline records that look something like
this:

Name:  Joe Blow
DataField1:  xxxxx
DateField1: 07/07/77
DataField2: xxxxx
DateField2: 12/07/03

Name:  Fi Doe
DataField1:  xxxxx
DateField1: 08/08/88
DataField2: xxxxx
DateField2: 12/12/03

etc.

There is an empty line that separates each record.   I need to extract the
records that meet certain criteria.   I would really like to know how to
do this in Perl.
(For a simple task like this, in the past, I would just import these
records into a database and write a query to extract the records that I
wanted.)

I've actually thought a lot about the problem, but I haven't done any perl
coding that would allow me to put my woeful perl ineptitude on public
display in this forum.   I hope to find the time to start on this problem
in the next couple of days.  As I'm certain to run into problems, I will
then share my ineptitude while looking for proper guidance from the valued
learned ones.

Until then, here's what I was thinking to do.  What I thought I would do
is try to read each line of one record into an array or hash, then use a
conditional to determine if that record meets the desired criteria.  If it
meets the criteria, write out this record to another  file and then read
in the next record.  If the record doesn't meet the criteria, read in the
next  record.  I would keep doing this until EOF.

I think I can handle the conditional stuff, but what I don't know how to
do is read in each line of the record and stop reading when I hit the
empty line so that I can do the conditional stuff.

Is this a valid approach to take for this problem?  And if so, should I
use an array or hash ?   And again, how do I stop reading the input file
when I hit the empty line so that I can do the conditional stuff ?

Thanks in advance for any help and/or hints.  The feedback from my last
question was extremely helpful as I struggle to get Perl to do what I want
it to do. I think I'm making progress, although it doesn't always feel
that way !

- Stuart


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to