use File::Stream; my $lookahead_regex = qr/\w+[=:]/; my ($handler, $stream) = File::Stream->new( *DATA, separator => qr/\n=*\n$lookahead_regex/, ); my $lookahead = ""; while (my $block = <$stream>) { $block =~ s/($lookahead_regex)$//; $block = $lookahead . $block; $lookahead = $1; print $block; print "-" x 60, "\n"; } __END__ header1=val1 header1b=val1b data1 ================== header2: val2 header2b: val2b data2 =============== header3: val3 header3b: val3b data3 header4= val4 header4b= val4b data4
header1=val1 header1b=val1b data1 ================== ------------------------------------------------------------ header2: val2 header2b: val2b data2 =============== ------------------------------------------------------------ header3: val3 header3b: val3b data3 ------------------------------------------------------------ header4= val4 header4b= val4b data4 ------------------------------------------------------------
In reply to Re^3: parse file per customized separator / block / metadata
by repellent
in thread parse file per customized separator / block / metadata
by raiten
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |