This (untested) code might get you started.
open( FILE, "<filename") or die "Can't open file: $!\n"; my @lines = <FILE>; close( FILE) or die "Can't close file: $!\n"; my $LastWasZero = 0; foreach my $line (@lines) { chomp $line; my ($recType, $rest) = unpack "A2A*", $line; if ($recType = "00") { if ($lastWasZero) { # two consequative 00 recs my ($date,$headerNumber) = unpack "A10A20", $lastWasZero; #do delete processing on $headernumber $date... } my ($date,$headerNumber) = unpack "A10A20", $rest; $lastWasZero = $rest; next; } else $lastWasZero = ""; if ($recType eq "01" ) { my ($field1, $field2,....) = unpack "...", $rest; # process 01 records next; } if ($recType eq "02" ) { my ($field1, $field2,....) = unpack "...", $rest; # process 02 records next; } .... }
Coded for clarity rather than efficiency
Corrected cut&paste error & brain fade error
In reply to Re: fixed length records, reading lines and catalogue updates
by BrowserUk
in thread fixed length records, reading lines and catalogue updates
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |