my $rec_reader = make_rec_reader('myrecordsep');
while (my $rec = $rec_reader->($fh)) {
print("Record\n");
print("======\n");
print "$_\n" for @$rec;
print("\n");
}
####
sub make_rec_reader {
my ($sep) = @_;
my $first = 1;
my $line;
my @rec;
return sub {
my ($fh) = @_;
# Skip what's before first record.
if ($first) {
$first = 0;
for (;;) {
$line = <$fh>;
last if not defined $line;
chomp($line);
last if $line eq $sep;
}
}
while (defined($line)) {
my @rec;
for (;;) {
push @rec, $line;
$line = <$fh>;
last if not defined $line;
chomp($line);
last if $line eq $sep;
}
return \@rec;
}
};
}
####
my $sep = 'myrecordsep';
{
# Skip what's before first record.
for (;;) {
$_ = <$fh>;
last if not defined;
chomp;
last if $_ eq $sep;
}
while (defined($_)) {
my @rec;
for (;;) {
push @rec, $_;
$_ = <$fh>;
last if not defined;
chomp;
last if $_ eq $sep;
}
process_rec(\@rec);
}
}