From: "Morrison, Trevor (Trevor)" <[EMAIL PROTECTED]>
> What I am trying to do is to process a file that has say 1000 orders
> in it all pretty much of the same format. I want to open up the file,
> and then using a while loop go down through all of the order
> one-at-a-time and once I have all the fields populated and I have
> reached a certain line at the end of each order write the data to the
> database. Then have it all reset, and process the next order; and do
> this until the EOF. That is the goal.
Seems you want something like this (untested of course):
use Switch;
my %order;
while (<IN>) {
chomp;
switch ($_) {
case /^(\w+)\s*: *(.*)/ {$order{lc($1)} = $2}
case /^ORDER END MARKER/ {
save_the_order(\%order);
undef %order;
}
else {print "Incorrectly formated line $.: $_\n"}
}
}
This assumes that the order file looks somewhat like this:
Name: John Doe
Amount: 10
Goods: gun XYZ-12345
Sum: 10100
ORDER END MARKER
Name: John Doe
Amount: 1
Goods: machinegun ABC-987
Sum: 2000
ORDER END MARKER
The code basicaly remembers anything that looks like data and when it
encounters the end-of-order marker it calls a subroutine with all the
data and clears the "memory".
Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed
to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]