in reply to Re^2: A caller() by any other name
in thread A caller() by any other name

Hope you are still checking the thread. Having read your comments and those that followed, I think I grok what you are getting at. Assuming you are not threading your code, you could essentially add a line at the start of every subroutine that caches the class/object reference of the call in a package global. You could then use caller to id the package, and the local variable to id what the last object used was. Clearly not elegant, and a horrible violation of OO ideals, but would work and shouldn't be too rough to create.