Hmm, well, whatever the problem is, it's with your server (that's as much as you can do from perl).
Try a passing all those
parameters via a POST request.
Get some packet capturing software, and capture a session from a browser (which apparently works?)
and capture a mechanize sessions and compare (your finicky server is probably expecting some headers your request doesn't have).