my $outfilename = "outfilename"; open INFILE, "$input_file" or die "Can't open $input_file: $!\n"; while () { if ( /section-end-marker/ ) { close OUTFILE; next; } if ( /section-start-marker/ ) { # generate the new $outfilename however open OUTFILE, "> $outfilename" or die"$!\n"; next; } print OUTFILE; }