my @buffer; while ... if( start condition ){ if( @buffer ){ INFO("start condition without end condition, discarding buffer "); } @buffer = $line; } elsif( end condition ){ print OUTFILE @buffer; undef @buffer; } else { push @buffer, $line; }