while( @data ) {
/^HEADING/ ... !/^HEADING/ and push @headings, $_;
/^TITLE/ ... !/^TITLE/ and push @titles, $_;
/^COMPND/ ... !/^COMPND/ and push @cmpnds, $_;
}
####
$re_types = qr/(HEADING|TITLE|COMPND)/;
while (@data) {
/^$re_types(.*)$/ ... !/^$1/ and push @{$type{$1}}, $2;
}
####
#! perl -slw
use strict;
my @data = ;
my (@headers, @titles, @compnds);
for (@data) {
(/^HEADER (?:\d+ )?(.*?)$/ and push(@headers, '' ))
...
!/^HEADER (?:\d+ )?(.*?)$/
and $1
and $headers[-1] .= $1, next;
(/^TITLE (?:\d+ )?(.*?)$/ and push(@titles, '' ))
...
!/^TITLE (?:\d+ )?(.*?)$/
and $1
and $titles[-1] .= $1, next;
(/^COMPND (?:\d+ )?(.*?)$/ and push(@compnds, '' ))
...
!/^COMPND (?:\d+ )?(.*?)$/
and $1
and $compnds[-1] .= $1;
}
print for @headers;
print for @titles;
print for @compnds;
__DATA__
HEADER Header 1 stuff
TITLE Title 1 stuff
TITLE 2 more title 1 stuff
COMPND complicated stuff 1
COMPND 2 continued complicated stuff 1
HEADER Header 2 stuff
TITLE Title 2 stuff
TITLE 2 more title 2 stuff
COMPND complicated stuff 2
COMPND 2 continued complicated stuff 2
HEADER Header 3 stuff
TITLE Title 3 stuff
TITLE 2 more title 3 stuff
COMPND complicated stuff 3
COMPND 2 continued complicated stuff 3
COMPND 3 continued complicated stuff 3
HEADER Header 4 stuff
TITLE Title 4 stuff
TITLE 2 more title 4 stuff
COMPND complicated stuff 4
COMPND 2 continued complicated stuff 4
HEADER Header 5 stuff
TITLE Title 5 stuff
TITLE 2 more title 5 stuff
COMPND complicated stuff 5
COMPND 2 continued complicated stuff 5
HEADER Header 6 stuff
TITLE Title 6 stuff
TITLE 2 more title 6 stuff
COMPND complicated stuff 6
COMPND 2 continued complicated stuff 6
####
C:\test>221570
Header 1 stuff
Header 2 stuff
Header 3 stuff
Header 4 stuff
Header 5 stuff
Header 6 stuff
Title 1 stuff 2 more title 1 stuff
Title 2 stuff 2 more title 2 stuff
Title 3 stuff 2 more title 3 stuff
Title 4 stuff 2 more title 4 stuff
Title 5 stuff 2 more title 5 stuff
Title 6 stuff 2 more title 6 stuff
complicated stuff 1 2 continued complicated stuff 1 complicated stuff 2 2 continued complicated stuff 2 complicated stuff 3 2 continued complicated stuff 3 3 continued complicated stuff 3
complicated stuff 4 2 continued complicated stuff 4 complicated stuff 5 2 continued complicated stuff 5 complicated stuff 6 2 continued complicated stuff 6
C:\test>