Well passing flags in the PATH_INFO works fine, but wouldn't encourage doing it that way, beacause the browser will show the whole path (including flags). This is fine if there is no real sensitive info in the path, but it can be more of a security risk. Using hidden fields is a bit safer.
But your code itself does look a lot nicer ;-)
I've never claimed to be a Perl God(TM), and any claims to the converse are used fictitiously.