in reply to RE: global hash going out of scope

You are doing %seg000= &ProcessSegment000(...) which tries to a assign single value to an array. This will fail. You'd know that if you checked for failure of your eval and printed $@. Though I don't think this explains your problem since that failure should come after the subroutine was called and before the hash is cleared by the assignment. If you in fact have a subroutine that returns an even number of values, then dropping "%seg000=" from your eval might well fix your problem.

In the long run, you might be better off to take the time to figure out how to elminate the eval entirely.

        - tye (but my friends call me "Tye")