in reply to Unexpected CGI param behavior

The fine manual says:
If the parameter does not exist at all, then param() will return undef in a scalar context, and the empty list in a list context.
(Emphasis mine)

Essentially using the reasoning mentioned by pc88mxer.

So this is a case of FAD (Functions as documented).

++ for identifying and documenting the issue clearly.

     "A fanatic is one who redoubles his effort when he has forgotten his aim."—George Santayana