in reply to .cgi?action params

In what sense did they not work?

Note that you should only construct one CGI object per request.

What is the value of $action?

Why do you think that anything will end up in @_ in the code you show?

Maybe you can show us the complete URL you are using to invoke your script and tell us in English words what you intend to happen?

Then, also show us a short, 20 line CGI script you are using to make that happen, and please also tell us what happens instead.