Take a look at the HTML source in your browser. If there is more than one instance of the h parameter, cgi will return a list, not a scalar.
If this is the case, and one of the h values is not set, your list will contain an undef value. Also, you would be assigning a list to $h, a scalar, and only getting one value from the list. As there is no guarantee on the order that values for multiple instances of the same parameter will be returned from the browser, you could never be sure which value you are assigning to $h.