This is probably obvious, in which case I apologise, but there doesn't seem to be any way for your form to tell perl what you want $asc_desc to be... so param('asc_desc') is always undefined and $asc_desc always ends up as DESC.
You'll need a radio_group() or popup_menu() to select ASC or DESC. In fact, I'd be inclined to do the whole thing with radio_group() or popup_menu() rather than multiple submit buttons - not quite as ergonomic less mind-mangling.