There are a couple of things wrong with your regular expression...
- Square brackets are not a grouping construct. They are a character class. /[INSERT|CREATE]/ will not match the string "INSERT". It matches a single character which must be one of these: ACEINRST|. What you want are rounded parentheses: /(INSERT|CREATE)/.
- Your assignment to my ($start, $query) seems to be assuming that two variables will be assigned. However, the things that get assigned are the matches of so-called capturing subexpressions within the query. Subexpressions are things within rounded parentheses; they are capturing subexpressions unless you do something to make them non-capturing, like placing ?: just inside the opening parenthesis.
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'