Well, you can probably get the sort of functionality you want from the Safe module. I did some similar things using a stripped down version of Safe to help implement plugins. I simply took out all of the stuff for allowing and disallowing different operators. It made sense to do this because I wasn't using it as a container to "safely" evaluate untrusted code but as a way to isolate trusted code. If I recall correctly, I really wanted to be able to unload modules.
I should point out that it was several years ago that I did this. Perl was probably at 5.002. I've rarely used Safe.pm since. I'm not sure what, if anything, has changed. It probably isn't the best way to do what you want and even if you do use it, it'll take some creativity. I only mention it because it is there and it might be worth knowing about.
"My two cents aren't worth a dime.";