use strict; local $/ = undef; # grab everything from file open FILE, "my_file" or die $!; foreach $data_block (split /match_instance/, ) { open OUTPUT, "new_file_name" or next; print OUTPUT $data_block; close OUTPUT; }