This piece of script isn't helpful. It either got mangled when you posted it, or you "trimmed" it and cut out the useful bits.
Generally the error "can't call method X on undefined value" means that at that point in your code you said:
$y->X()
and $y happened to be undefined at that time. Why? Look earlier in your code where you created $y with something like:
$y=new Class
The creation failed or you didn't create the object (usually with
new) at all.
I'm betting that you said $q->param() somewhere but never actually said $q=new CGI; beforehand to create the CGI object. But that's just my wild guess.
Sorry to be vauge, but your posting wasn't really helpful.