To answer the question directly:
No, there are no real side-effects to this method.
That way should work just fine. It might be fastest
if you have this run before loading CGI.pm (via
a BEGIN block). You could also check for
$ENV{'REQUEST_METHHOD'} ne "POST"
## or
$ENV{'REQUEST_METHOD'} eq "GET"
## or even
$ENV{'REQUEST_URI'} =~ /\?/
Finally, note that you original code, technically
speaking, should test for the existence of
QUERY_STRING, and not the truth of it, using
defined or even
exists. But since most cgi
scripts require a pair, putting ?0000
will probably not do much for your scripts, so the
truth test should suffice.
P.S. Sure it can be worked around, but it *will*
prevent people from being able to bookmark a URL
with parameters already set.