Nice. Don't forget to "get along well with the other children" by putting $/ back!
-Tom Kinzer -----Original Message----- From: Kevin Pfeiffer [mailto:[EMAIL PROTECTED] Sent: Monday, December 08, 2003 1:52 PM To: [EMAIL PROTECTED] Subject: Re: How to process multi-line records ? Hi Perl-List! Stuart Clemons wrote: [...] > > 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. Here's a simple version that writes matching records to STDOUT... #!/usr/bin/perl use warnings; use strict; # sample patterns my $DateField1 = '07/\d+/77'; # July 77 my $Name = "Doe\n"; # Lastname is "Doe" $/ = ""; # treats empty line(s) as record terminator while(<DATA>) { if (m{DateField1:\s+$DateField1} || m{Name:.*$Name}) { print; } } -- Kevin Pfeiffer -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>