Переменные, объявленные с my, имеют область действия ближайшего окружающего блока.Что в вашем случае означает, что $query
не объявлено вне вашего оператора if.
Решение состоит в том, чтобы поместить объявление в нужную область, например, перед оператором if.
With use strict
в действии, что подразумевается в сообщенной вами ошибке Global symbol "$query" requires explicit package name
, это приведет к ошибке 500.