in reply to
%ENV in a .pm versus .cgi ?
Is it possible that %ENV was getting pulled from different sources, but were in fact just happened to be identical on the old server?
One situation in which I can think that %ENV would be different in this case is if %ENV is being modified globally unbeknownst to you. Is it being changed in one of your modules?
Another situation in which %ENV might be different (and in this case not cause side effects) is if you shell-out at any point in the CGI script or in one of your modules. In this case, anything executed as a separate shell process might be subject to a fully different %ENV (because it's a separate child process).
As others have said, without precious information all we can do is speculate.