otherwise, with perl being only serverside and running a script to generate CGI that's passed onto web browser client via web server...perl script is either linked to or a form submit etc, and caused full reload of browser window.
another way to do this is to sort of "fake it". the one perl cgi script always checks CGI parameters at the start of the code, and does different things based on this information. for example called without parameters, it would generate the form. called with some form parameters, it can generate the form with further fields populated. called with all required parameters in the form, it does whatever is needed for the full submit and generates a response. you will need to setup the onchange handler for the drop down, to make it call the same perl cgi script. Nowadays this sort of setup would be considered a bit of a kludge, as although it can and will work, making a selection in the drop-down caused a full reload of browser window and the perl cgi runs and generates the whole screen as needed.
the hardest line to type correctly is: stty erase ^H