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.
in reply to Hmm I get this error from $q's
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.