Okay, let's see. First, you use -T and -w and strict. That's a great combination. Plus, you use CGI.pm for query processing. So I tried to run your code and it worked. The command line execution (perl -T 672495.pl) resulted in some error HTML which seems to be fine according to the logic (throwing exception on bad inputs).
in reply to Re^2: The execution of my CGI opens a new navigator window
in thread The execution of my CGI opens a new navigator window
Right in the <head> section caught my eyes was <base href="http://localhost" target="_blank" /> (produced in print_error_page() subroutine). It basically says that every link clicked on this resulted page will be openned in a new window due to the _blank target. I don't know if it relates directly to your real problem as you didn't say the flow of your program, but you may want to work it out from that.
Now that Corion reveals some chatterbox session, which part of his advice you think you missed and why? I'm sorry to ask this but it's generally considered inconsiderance if you post a problem, but neglecting previous suggestions without reason.
Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!