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>


Reply via email to