La función set_prototype en Scalar::Util permite establecer dinámicamente el prototipo de una función o borrarlo:
             set_prototype CODEREF, PROTOTYPE
Establece el prototipo de CODEREF o lo borra si PROTOTYPE es undef. 
Returna CODEREF. Ejemplo:
               set_prototype \&foo, ’$$’;
Casiano Rodríguez León
