I think you are right. My method will tell whether a module was loaded before or after the main program was compiled, not whether it was a "use
" or "require
" statement that did the loading. It would be useless for the given purpose (about which I wans't quite clear when I wrote the reply).
Putting a subref on @INC looks like the best bet. It should be possible to tell the cases from another by looking at some levels of caller(). One problem here is to make sure you are always called. If someone unshifts new components onto @INC in front of you, you may never be for some modules.
Update: tie-ing @INC could help. It isn't magical, so tie should be no problem.