You see, q is not a subroutine, it's a syntactic construct, like quotes or braces. There is nothing to "override". You can, however, change its semantic a bit with:
a source filter (ok, this is obvious)
redefinition of stringification for some datatype (package MyQ;use overload '""' => sub {return "overridden"};)