in reply to Re: advice with Parse::RecDescent
in thread advice with Parse::RecDescent
For what it's worth, I have to agree with you, VSarkiss. Just looking at the input data immediately makes me think of code that looks something like this:
# ... file is opened in handle FH my ($compname, $hdrdata, $tlrdata ); while (<FH>) { /^HDR(\w+)\s+(\w+)/ && do { $compname=$1; $hdrdata=$2; # handle a header next; }; /^TLR(\d+)/ && do { $tlrdata=$1; # handle a trailer with number=$1 next; }; /^ADD(?:RANGE)?|DELETE(?:RANGE)?/ && do { my ($type,@range_data) = split /,/; my $comp_rec = pop @range_data; if ($comp_name eq $comp_rec ) { # validate record # process type, range data, etc. } else { # error? } next; }; # any other kind of line falls through here # error: ... }
Voila! Simplicity itself, no? Well, okay. Maybe not, but certainly straightforward.
dmm
You can give a man a fish and feed him for a day ... Or, you can teach him to fish and feed him for a lifetime
|
|---|