I need to get the exact order in which the HTTP request headers were sent by the browser from within my CGI script. I need this to perform browser fingerprinting.
A non-Perl related flaw in your plan is that any HTTP Proxy between you and the browser (and there may be many depending on the networks of the client, the server, and anything in between) can legally reorder the headers, as long as headers with the same name preserve their relative order.
So while two sets of headers in identical order may indicate the same browser, the same browser sending the identical requests could result in your server receiving the same headers in a completely different order. (I have observed this using several different HTTP Proxy servers)