Normalizing is a term I understand, but the database does not, I do not think that was a term used when this database was *born* in the late 70's. Yes it is very old; I am not even going down that road. I believe the only way to normalize this is database is to take it out back to the shed and yes you said it shoot it, and replace it with ORACLE. :)
I thought it would be done with hashes and every time I get into hashes I get a headache. I do see that I have much to learn about Perl especially hashes. TIA // Larry -----Original Message----- From: drieux [mailto:[EMAIL PROTECTED] Sent: Thursday, December 11, 2003 6:22 PM To: Perl Perl Subject: Re: Parsing problem On Dec 11, 2003, at 12:27 PM, Larry Sandwick wrote: > With the little amount of Perl that I know, I have come to a dilemma. I > do not know how to parse this file so in column 1 (24165) is the number > duplicate for every item number in the list. I also need in the 2 > column (O185850) to duplicate itself for every item. The 3rd item > (05/30/03)needs to follow the same process. The file format is below, > before the parser. > > I know I can split the file on "|" but because the data is not > consistent and my skill set is limiting me to re-parse this file into a > file I can upload into MySql I am asking for help and suggestions I do > I > detect that column 1 has change ? Some how I need to read in the first > three lines for every backorder, before I can start outputting the > data? > . personally I say Shoot the "person" who came up with the file lay out - but what you need is a bit of peek ahead coding. my $entry; # our entry - from the first line my $key = ''; # the 'key' - that bit from the second line my $date = ''; # date - that occurs on the third line my $line; # what we will cache the 'rest of the date line' # I was using Inline::Files - so let us assume that # you opened the file as INFO1 while ( my $stuff = <INFO1> ) { chomp($stuff); next if ($stuff =~/^\s*$/); # blow off empty lines # thin down the spaces around the "|" # this way the $user in particular will be 'empty' # as well as streamline the other fields $stuff =~ s/\s*\|\s*/|/g; my ($user,$itemkey,$tail) = split(/\|/, $stuff, 3); if ( $user ) { $entry = $user; # save the entry info $key = $date = ''; # reset any previous key and date } else { if ( $key && $date ) # if we have both, this is a follow on item { print "$entry|$key|$date|$tail\n"; } elsif ( $key ) # if we have the key we need the date { $date = $itemkey; # collect the date # send out foist the Old Line and then our new one print "$entry|$key|$date|$line\n"; print "$entry|$key|$date|$tail\n"; } else { $key = $itemkey; # save the key $line = $tail; # save the tail } } # else side of have user value } that will generate your 24165|O18580|05/30/03|259|LEATHER BOOK SIDE TABLE|1|1|295.00 24165|O18580|05/30/03|1774|FUNCTIONAL TABLE LAMP|1|0|35.00 24165|O18580|05/30/03|1773|FUNCTIONAL FLOOR LAMP|1|0|62.50 24165|O18580|05/30/03|1302|MOROCCAN FLORAL BX,BRASS|1|0|29.00 24165|O18580|05/30/03|1666|CUBA COFFEE TABLE|1|1|290.00 24165|O18580|05/30/03|1666|CUBA SIDE TABLE|1|1|147.50 24310|O18813|07/29/03|1145|FLEUR-DE-LIS DOCUMENT BOX|1|0|52.50 24310|O18813|07/29/03|1549|TAOS CENTERPIECE|1|1|65.00 24310|O18813|07/29/03|1729L|FRENCH BOX BOOKEND, LEFT|1|1|69.00 24310|O18813|07/29/03|1729R|FRENCH BOX BOOKEND, RIGHT|1|1|69.00 24310|O18813|07/29/03|1549|WINDEMERE BOOK CADDY|1|0|85.00 24310|O18813|07/29/03|1774|REVOLVING BOOK TABLE|1|1|234.00 24310|O18813|07/29/03|1574|NORMANDY 3 DRAWER CONSOLE|1|1|330.00 24310|O18813|07/29/03|1765|LEATHER BOOKS,ASST.SET/12|1|1|175.00 5522|O18549|05/20/03|1551|HEX LEATHER GARDEN STOOL|1|0|130.50 5522|O18549|05/20/03|1749|TRIVET STAND|1|1|87.75 5522|O18549|05/20/03|1801|DESK BOX, VICTORIA|1|1|85.50 5522|O18549|05/20/03|1549|TAOS CENTERPIECE|1|1|58.50 Still think you should shoot who EVER came up with the original file format... HTH.... ciao drieux --- -- 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>