Can you give a specific test-case that causes it to crash? I tried a couple of examples with 5.8.3 under linux and didn't get a problem.
In general, lexical variables tend to cause problems within deferred evals: I suspect that by the time the evals get compiled perl has already decided that the file-scope lexicals are not referred to, and thrown them away.
So, once you have a test-case, I'd suggest replacing 'my' with 'our' for all those file-scope variables (from $TERM to %OPS), and see if the test-case then passes.
Hugo