in reply to Partially wrong info from caller()

I am unable to reproduce your result, and so cannot say what you're doing right or wrong.

Can you produce a minimal example that illustrates the bug?

(My personal guess would be that someone did some cut-and-paste, so the function that is supposed to be in one module also exists in the other, and Perl is telling you the truth. Excessive use of cut-and-paste is a different problem.)