I've changed approach a bit, there is no need to match and substitute, as you can do test/substitution in one step,
Matching Create\s*Table
and everything after that is not ;
char, using positive look behind \K
if ($data =~ s/Create\s*Table[^;]+\K/blsize 2048/gi) {
write_file(($_, $data))
}