If I correctly read this message from Larry: http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-04/msg00081.html we shouldn't be refusing to run INIT blocks just because a module was loaded with 'require', or because a string was eval()ed.
That was the most recent discussion of the issue I could find: have I missed a later refutation? If not, is this still desirable? The current behaviour seems like an odd wart that substantially limits the usefulness of INIT blocks. I'm not sure whether an analogous fix is required for CHECK blocks, or what the impact of either change might be. Hugo