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); } }