That would probably work for the output, though bikeNomad mentioned that he could just use another filehandle for the output. It wouldn't, however, work for the side-effects, which I gathered to be the greater of the two problems.
Unfortunately, I don't think that there's any way to stop the BEGIN blocks running, short of pre-parsing the file, inserting return() calls as the first instruction in the BEGIN block before loading the modified code into the debugger. Of course, that means that you have to try to parse Perl code yourself, which defeats the original purpose. *shrug* And, of course, that doesn't even come close to handling things like use.
But, honestly, for the code to be parsed correctly at all, some compile-time execution is probably unavoidable. Otherwise you wouldn't get your import's set up correctly and all that. Perhaps all one can do is hide any output from the compile-time code and hope for the best. *sigh* Maybe this kind of thing will get easier when Perl 6 comes around.
Seasons don't fear The Reaper.
Nor do the wind, the sun, and the rain.
We can be like they are.