I have other subs that work just fine with the same setup. It only happens when the $self->{apr} gets modified. The persistance is not a problem because the correct modules get loaded per request. Even if the name change is persistant for the one site that shouldn't matter (I don't think it is). Somehow the memory location where I stored the original routine gets overwritten ... you know I think I might know the problem ... I wonder if, by modifying anything in the $self variable that it changes the state of chain of references .... hmm I'll have to investigate that further.
In the meantime I actually worked around the problem by creating a list_images() sub in the SWMetal::Buffs module, for this particular one I didn't need to call my modified routine in the entire program.