Thanks all: I think I'll go with wrapping it in an anonymous sub -- eval will then return something that I can actually run, later, if I want. I'll probably run some rexen on the code to ensure it doesn't contain things like "BEGIN", "CHECK", "use" or named-sub defns. If I overly constrain, then someone will complain and I can fix it later. --Dave