That's odd, because the code works just fine here. Are you sure the routine
whats() is returning something? Are you running the code with the
-w switch? Are you sure you're not getting any errors, such as "Odd number of elements in hash assignment" or "Use of uninitialized value in concatenation (.) or string"?
One other thing about your code, if you are generating HTML, you can avoid escaping quotes (i.e., \" ) by using Perl's quoting mechanisms, such as print qq{this is a "quote"\n}. Mind you, there are better ways of generating HTML, but that's another story...
print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'