By default when you write an AUTOLOAD, the functions that are available from it are not visible to UNIVERSAL::can. Worse yet, if you try to use AUTOLOAD in a subclass, you hide the AUTOLOAD in a superclass (or in classes farther down the tree in multiple inheritance) so AUTOLOAD and inheritance do not play well together. See http://www.perlmonks.org/?node_id=342804 for a full explanation of the problems. This module attempts to solve that. Import this module somewhere in the class hierarchy that you wish to have your AUTOLOAD, and write a CAN which takes arguments and returns a function that will do that. This module will then provide an AUTOLOAD and UNIVERSAL::can that cooperate and work properly.