in reply to AUTOLOAD detecting the type of method call.

Hmmmmmm, based on the info from caller() and the arguments, i think that the following can be said for what information is available :
$obj->blah(); == PKG::blah($obj); &blah(); # in PKG == PKG::blah();
But, the two sets are not equal (based on the first parameter ref(), as you said). There may be a way using caller() to get the calling package, which is why i specified &blah(); # in PKG, because, if exported, it is possible that the last caller would be in main::. The only other way to really tell, i would think, would be to pass a parameter which specifies, but that just sucks.
     There be a way i have missed, and i will definitly be watching this node for updates.
my own worst enemy
-- MZSanford