in reply to my hash used only once: possible typo

Are you sure this warning is spurious? Basically it means that %SQL::Wrapper::q is not used anywhere else, at all, for example this code doesn't produce the warning:
{ package SQL_Wrapper; use strict; use warnings; our %q; } package main; use strict; use warnings; my %q = %SQL_Wrapper::q; $q{f} = 42;
but this code does:
{ package SQL_Wrapper; use strict; use warnings; # our %q; } package main; use strict; use warnings; my %q = %SQL_Wrapper::q; $q{f} = 42;
What is setting/changing %SQL_Wrapper::q in your program or modules that your program is using?