Yes, I thought I needed to parse those "groups" together into a line
That doesn't make much sense. Parsing is the opposite of putting things together into a line.
Given the lack of direction, I'll just create an array of records using a single line lookahead.
my $line = <$fh>;
# Skip first line
die if !defined($line);
$line = <$fh>;
# Skip second line
die if !defined($line);
$line = <$fh>;
while (defined($line) && $line !~ /^© Copyright/) {
chomp( my $date1 = $line );
$line = <$fh>;
die if !defined($line);
chomp( my $date2 = $line );
$line = <$fh>;
die if !defined($line);
my $body = $line;
$line = <$fh>;
my $body = '';
while ( defined($line)
&& $line !~ /^\d{2}\/\d{2}\/\d{4}$/
&& $line !~ /^© Copyright/
) {
$body .= $line;
$line = <$fh>;
}
chomp( $body );
my ($order) =~ $body =~ s/\n(.{7})\z//
or die;
push @recs, [ $date1, $date2, $body, $order ];
}
# Skip copyright line
die if !defined($line);
$line = <$fh>;
# Skip another line
die if !defined($line);
$line = <$fh>;
die if defined($line);
|