in reply to my hash used only once: possible typo

If you are certain that a warning is spurious, you can disable it locally using no warnings;. It is generally considered good form to disable warnings in as small a scope as possible and to only disable the known spurious warning. In this case, the warning is once (see Category Hierarchy in perllexwarn), so you could use the code:

no warnings "once"; my %q= %SQL_Wrapper::q; use warnings;

or you could use a do, which is what I usually use in this sort of scenario

my %q= do{ no warnings "once"; %SQL_Wrapper::q; };